设计模式-观察者模式

本文将会从定义,类图,案例等几个方面对观察者模式进行说明:

定义

观察者模式:定义了一种一对多的依赖关系,一个主题对象可以同时被多个观察者对象同时监听,使得每当主题对象状态发生变化时,所有依赖它的对象都会得到通知并自动更新,属于行为者模式。

观察模式又叫做发布-订阅模式,模型-视图模式,源-监听模式或从属者模式,其核心是将观察者和被观察者解耦。

类图

观察者模式

根据类图给出模板代码:

public interface Subject {

/**主题接口*/

void attach(Observer o);

void detach(Observer o);

void notify(Message m);

}

public interface Observer {

/**观察者接口*/

void update(Message message);

}

public class ConcreteSubject implements Subject {

/**具体主题生产者*/

private List<Observer> observers = new ArrayList<Observer>();

@Override

public void attach(Observer o) {

observers.add(o);

}

@Override

public void detach(Observer o) {

observers.remove(o);

}

@Override

public void notify(Message message) {

for(Observer observer: observers){

observer.update(message);

}

}

}

public class ConcreteObserver implements Observer{

/**具体观察者**/

@Override

public void update(Message message) {

//根据实际情况编写

}

}

public class Message {

/**消息,这里简写*/

}

public class Client {

public static void main(String[] args) {

Subject subject = new ConcreteSubject();

subject.attach(new ConcreteObserver());

subject.notify();

}

}

案例

1:JDK自带的Observable和Observer实现观察者模式

gihub地址:https://github.com/siweidetu/DesignPattern/tree/master/gper

参考书籍:《设计模式就该这样学:基于经典框架源码和真实业务场景》

2: Guava实现观察者模式

gihub地址:https://github.com/siweidetu/DesignPattern/tree/master/guava

gihub地址:https://github.com/siweidetu/DesignPattern/tree/master/guava2

参考书籍:《设计模式之美》

3: javascript观察者模式

gihub地址:https://github.com/siweidetu/DesignPattern/blob/master/scripts/observer

参考书籍:《javascript设计模式》

总结:

文中的案例会不断的完善,从更多的角度去分析,增加对这种模式的理解,落实到实践中。


©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 客户需求 程序设计 一个气象站对应着多个客户端,气象站的数据一发生变化,客户端的数据也要随着更新,这就形成了一种依...
    BlainPeng阅读 4,631评论 1 17
  • 观察者模式是使用最为频繁的设计模式之一。在很多地方都有用到。比如各种编程语言的GUI事件处理实现,各种框架的实现,...
    树獭非懒阅读 15,724评论 1 7
  • 前言定义:观察者设计模式定义了对象间的一种一对多的依赖关系,以便一个对象的状态发生变化时,所有依赖于它的对象都得到...
    xsp单细胞阅读 3,251评论 0 1
  • 观察者模式的定义: 在对象之间定义了一对多的依赖,这样一来,当一个对象改变状态,依赖它的对象会收到通知并自动更新。...
    代码之尖阅读 3,749评论 0 51
  • 观察者模式也叫作发布-订阅模式,也就是事件监听机制。观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听...
    超级大鸡腿阅读 1,729评论 0 0

友情链接更多精彩内容