观察者模式改进版java_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() {

return news;

}

}

class ObserverA implements Observer{

private String news;

public void update(Subject subject) {

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

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

System.out.println(getNews());

}

public String getNews() {

return news;

}

public void setNews(String news) {

this.news = news;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值