Observer 观察者
Observer 观察者
需要事件源对象,事件,观察者。观察源中聚合观察者List,
例如AWT(抽象窗口工具包)中的KeyEvent,事件源对象是窗口,事件是各种keyEvent,自定义观察者对象处理各种事件。
public class Observer {public static void main(String[] args) {Child child = new Child();child.setName("XiaoMing");Observer1 observer1 = new Observer1();Observer2 observer2 = new Observer2();child.observersArrayList.add(observer1);child.observersArrayList.add(observer2);child.cri();}}class Child{String name;ArrayList<Observers> observersArrayList = new ArrayList<>();public String getName() {return name;}public void setName(String name) {this.name = name;}public void cri(){EventPart1 eventPart1 = new EventPart1(this,System.currentTimeMillis());System.out.println("Child is cri");Iterator<Observers> it = observersArrayList.iterator();while(it.hasNext()){it.next().action(eventPart1);}}}interface Event<T>{T getSource();}class EventPart1 implements Event<Child>{Child child;Long timestamp;@Overridepublic Child getSource() {return child;}public EventPart1(Child child,Long timestamp){this.child=child;this.timestamp=timestamp;}}interface Observers{void action(EventPart1 eventPart1);}class Observer1 implements Observers{@Overridepublic void action(EventPart1 eventPart1) {System.out.println("Observer1,timestamp:"+eventPart1.timestamp+"Child name:"+eventPart1.child.getName());}}class Observer2 implements Observers{@Overridepublic void action(EventPart1 eventPart1) {System.out.println("Observer2,timestamp:"+eventPart1.timestamp+"Child name:"+eventPart1.child.getName());}}
