轻松掌握Java观察者模式

网友投稿 202 2023-07-05


轻松掌握Java观察者模式

定义:当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知它的依赖对象。

特点:

1、观察者和被观察者是抽象耦合的。

2、建立一套触发机制。

企业级开发和常用框架中的应用:java自带观察者类,servlet中的filter,分布式的消息队列

实例:

public class Demo {

public static void main(String[] args) {

ActualSubject subject = new ActualSubject();

ObserverA o1 = new ObserverA();

ObserverA o2 = new ObserverA();

ObserverA o3 = new ObserverA();

//订阅消息

subject.addObserver(o1);

subject.addObserver(o2);

subject.addObserver(o3);

subject.setNews("今天天气真好");

}

}

/**

* 观察者接口

*/

interface Observer{

public void update(Subject subject);

}

/**

* 目标对象,广播对象

*/

class Subject{

private List list = new ArrayList<>();

public void addObserver(Observer o){

list.add(o);

}

public void removeObserver(Observer o){

list.remove(o);

}

public void notifyAllObserver(){

for(Observer o:list){

o.update(this);

}

}

}

class ActualSubject extends Subject{

private String news;

public void setNews(String news) {

this.news = news;

System.out.println("我是广播,我发出了一个消息");

notifyAllObserver();

}

public String getNews() {

returnhttp:// news;

}

}

class ObserverA implements Observer{

private String news;

public void update(Subject subject) {

setNews(((ActualSubject)subject).getNews());

System.out.println("我是观察者,我接收到一个我订阅的广播发出的消息,接下来我要toAXumH做出响应的操作");

System.out.println(getNews());

}

public String getNews() {

return news;

}

public void setNews(String news) {

this.news = news;

}

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:微信小程序(二十一)switch组件详细介绍
下一篇:轻松掌握Java备忘录模式
相关文章

 发表评论

暂时没有评论,来抢沙发吧~