同样作为咱们的Subject主体,这里用List来存储咱们的观察者们,leader类实现Subject接口,分别是注册观察者
void registerObserver(Observer observer);
移除观察者
void removeObserver(Observer observer);
最后是咱们的通知观察者

void notifyObserver(Object data);
OK,能者多劳嘛,咱们Leader类身为leader更应该以身作则,比较能干嘛。。。
完成编码,进入咱们的run测试阶段
public static void main(String[] args) {
Leader leader = new Leader();
Coder coder = new Coder();
ProjectManager projectManager = new ProjectManager();
leader.registerObserver(coder);
leader.registerObserver(projectManager);
leader.notifyObserver("Today is a holiday!");
System.out.println("now leader remove project manager!");
leader.removeObserver(projectManager);
leader.notifyObserver("Overnight overtime today!");
}
输出:
coder receive news:Today is a holiday!
Project Manager receive news:Today is a holiday!
now leader remove project manager!
coder receive news:Work overtime today!
毋需多说,你懂的
话说JDK里面java.util包下面有这个模式,可见此模式的普遍适用性和实用性,没事大家可以参考一波,这里就不一一列举了,不过和以上所述有一点初入的地方就是JDK中的Observable是一个类,不是接口,你如果想要使用原生的观察者,就得继承这个类,那么就限制了你的观察者对象的复用潜力,稍微违背了我们那么一丢丢“增加复用潜力”,“多用组合,少用继承”的设计动机哈~
感兴趣的同学可以去参考一波JDK源码
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-85285-2.html
尽管此后3年一蹶不振