建设外围彩票网站,网站建设好与管理在哪就业,做一个网站需要多少人,有哪些做mg动画的素材网站模式定义#xff1a;定义了对象之间的一对多依赖#xff0c;让多个观察者对象同时监听某一个主题对象#xff0c;当主题对象发生变化时#xff0c;他的所有依赖者都会收到通知并且更新 依照这个图#xff0c;简单的写一个代码
package Section1.listener;import java.ut…模式定义定义了对象之间的一对多依赖让多个观察者对象同时监听某一个主题对象当主题对象发生变化时他的所有依赖者都会收到通知并且更新 依照这个图简单的写一个代码
package Section1.listener;import java.util.ArrayList;
import java.util.List;public class ObserverTest {public static void main(String[] args) {Suject suject new Suject();//把观察者12塞到容器里面Task1 task1 new Task1();Task2 task2 new Task2();suject.addObserver(task1);suject.addObserver(task2);//对观察者下达一个 new task 通知String msg new task;suject.notifyObserver(msg);}
}class Suject{//容器ListObserver container new ArrayList();//addpublic void addObserver(Observer observer){container.add(observer);}//removepublic void removeObservce(Observer observer){container.remove(observer);}//通知public void notifyObserver(Object object){for (Observer item : container) {item.update(object);}}
}interface Observer{void update(Object object);
}//观察者1
class Task1 implements Observer{Overridepublic void update(Object object) {System.out.println(Task1 get object);}
}//观察者2
class Task2 implements Observer{Overridepublic void update(Object object) {System.out.println(Task2 get object);}
}观察者模式的优点是
符合开闭原则可以在运行时建立对象之间的联系
应用
JDKjava.util.ObservableSpring
下面是Spring中的应用代码
//相当于上面案例的Observer
FunctionalInterface
public interface ApplicationListenerE extends ApplicationEvent extends EventListener {//相当于updatevoid onApplicationEvent(E var1);static T ApplicationListenerPayloadApplicationEventT forPayload(ConsumerT consumer) {return (event) - {consumer.accept(event.getPayload());};}
}他的发布者是ApplicationEventMulticaster