Observer Pattern
来源:互联网 发布:zepto.js与jquery区别 编辑:程序博客网 时间:2024/04/29 12:39
Observer Pattern.
恩,今天总算搞懂了这个pattern,之前都是浆糊。哈哈。
我的象形理解就是,所有的大汉想观察一个姑娘,因为大汉的class里面,构造的时候已经有了姑娘的object, 相当于每个大汉生成的时候,眼睛里面已经有了姑娘这个目标, 然后都逼迫着这个姑娘拿自己的本子记录下大汉的名字,然后登记在姑娘的list上面,然后以后姑娘有什么动静update或者delete什么东西,必须通知名单上所有的大汉。姑娘call大汉们的通用method,就相当于通知所有的大汉信息,然后大汉各自看看就行了。
姑娘对所有的大汉说"你看看我最新的状态吧,我更新了“,因为大汉的class里面,构造的时候已经有了姑娘的object,大汉只要看看姑娘的状态就可以了,等于说这是一种消息机制。
恩恩,就这样理解,充实多了,哈哈。
public class Subject { private List<Observer> Observerlist = new ArrayList<Observer>(); private int state; public int getState(){ return state; } public int setState(int state) { this.state = state; notifyAllObserver(); } public void attach(Observer observer){ Observerlist.add(observer); } public void notifyAllObserver() { for(Observer observer: Observerlist) { observer.update(); } }}public abstract class Observer { protected Subject subject; public abstract void update();}public class BinaryObserver extends Observer { public BinaryObserver( Subject subject) { this.subject = subject; subject.attach(this); } @Override public void update() { System.out.println( "Binary String: " + Integer.toBinaryString( subject.getState() ) ); }}public class OctalObserver extends Observer { public OctalObserver(Subject subject) { this.subject = subject; subject.attach(this); } @Override public void update() { System.out.println( "Octal String: " + Integer.toOctalString( subject.getState() ) ); }}public class HexaObserver extends Observer { public HexaObserver(Subject subject) { this.subject = subject; subject.attach(this); } @Override public void update() { System.out.println("Hex String: " + Integer.toHexaString(subject.getState())); }}public class ObserverDemo{ public static void main(String[] args) { Subject subject = new Subject(); BinaryObserver binary = new BinaryObserver(subject); OctalObserver octal = new OctalObserver(subject); HexaObserver Hexa = new HexaObserver(subject); System.out.println("First state change: 15"); subject.setState(15); System.out.println("Second state change: 10"); subject.setState(10); }}System Output:First state change: 15Hex String: FOctal String: 17Binary String: 1111Second state change: 10Hex String: AOctal String: 12Binary String: 1010
0 0
- Observer Pattern
- Observer pattern
- Observer Pattern
- Observer Pattern
- Observer Pattern
- Observer Pattern
- observer pattern
- Observer Pattern
- Observer pattern
- Observer Pattern
- Observer pattern
- Observer Pattern
- Observer Pattern
- Design Pattern --------Observer pattern
- [Design Pattern]Observer Pattern
- The second pattern-------Observer Pattern
- Design Pattern 6-observer
- Spring load Observer Pattern
- Swing线程之SwingUtilities.invokeLater解释
- Swap Nodes in Pairs
- Swing之JList的使用
- java中TextArea和JTextArea的自动换行和滚动条
- swing JList JScrollPane使用时不显示数据的问题 JList设置可多选
- Observer Pattern
- 【9111】高精度除法(高精度除高精度)
- 第48课:Spark中的新解析引擎Catalyst源码Analyzer彻底详解
- 【9006】最优乘车
- tomcat-源码导入eclipse(简化版)
- JavaScript心經-this关键字篇
- mysql dataType
- 待研究的技术
- 52.View the Exhibits and examine lock waits. Users HR and SH complain that their transactions on one