实验 21:观察者模式
本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:
1、理解观察者模式的动机,掌握该模式的结构;
2、能够利用观察者模式解决实际问题。
[实验任务一]:股票提醒
当股票的价格上涨或下降5%时,会通知持有该股票的股民,当股民听到价格上涨的消息时会买股票,当价格下降时会大哭一场。
实验要求:
1. 提交源代码;
public class Stock extends MySubject {
public void change(int rate) {
for (Object obs : observers) {
((MyObserver) obs).response(rate);
}
}
}
import java.util.ArrayList;
public abstract class MySubject {
protected ArrayList<MyObserver> observers = new ArrayList<MyObserver>();
//注册方法
public void attach(MyObserver observer) {
observers.add(observer);
}
//注销方法
public void detach(MyObserver observer) {
observers.remove(observer);
}
//抽象通知方法
public abstract void change(int rate);
}
public interface MyObserver {
void response(int rate);
}
public class Holders implements MyObserver {
public void response(int rate) {
if (rate >= 5) {
System.out.println("股票上涨,买买买");
} else if (rate <= -5) {
System.out.println("股票下跌,大哭一场");
} else {
System.out.println("股票比较稳定,还好还好");
}
}
}
public class Client {
public static void main(String args[]) {
MySubject subject = new Stock();
MyObserver obs1;
obs1=new Holders();
subject.attach(obs1);
System.out.println("****股票上涨****");
subject.change(5);
System.out.println("");
System.out.println("****股票下跌****");
subject.change(-5);
System.out.println("");
System.out.println("****股票稳定****");
subject.change(4);
System.out.println("");
}
}
2. 提交类图;
3. 注意编程规范。