设计模式读书笔记之观察者模式(Observer)
来源:互联网 发布:windows grub 修复系统 编辑:程序博客网 时间:2024/05/16 05:17
观察者模式:让多个观察者可以监听某一个主题,当主题发生变化时,即使通知观察者,使他们自动能够更新自己。
类图就免了.
观察者模式比较简单, 通常的特征是:主题(被观察者)维护一个观察者序列, 当主题发生变化的时候,依次通知观察者,使之也改变自身.
基础示例:
- //抽象主题
- package designpattern.observer;
- public interface Subject {
- public void attach(Observer o);
- public void detach(Observer o);
- public void notifyObservers();
- }
- //抽象观察者
- package designpattern.observer;
- public interface Observer {
- public void update();
- }
- //具体主题
- package designpattern.observer;
- import <a href="http://lib.csdn.net/base/17" class='replace_word' title="Java EE知识库" target='_blank' style='color:#df3434; font-weight:bold;'>Java</a>.util.*;
- public class ConcreteSubject implements Subject{
- public List<Observer> observers = new ArrayList();
- public void attach(Observer o) {
- observers.add(o);
- }
- public void detach(Observer o) {
- observers.remove(o);
- }
- public void notifyObservers() {
- for(Observer o : observers){
- o.update();
- }
- }
- }
- //具体观察者
- package designpattern.observer;
- public class ConcreteObserver1 implements Observer{
- public void update() {
- System.out.println("I am observer 1, Subject's status changed.");
- }
- }
- //具体观察者
- package designpattern.observer;
- public class ConcreteObserver2 implements Observer{
- public void update() {
- System.out.println("I am observer 2, Subject's status changed.");
- }
- }
- //test case
- package designpattern.observer;
- public class Test {
- public static void main(String[] args){
- Subject s = new ConcreteSubject();
- s.attach(new ConcreteObserver1());
- s.attach(new ConcreteObserver2());
- s.notifyObservers();
- }
- }
适应情景:当一个对象发生改变而同时需要改变其他对象时。
观察者模式的作用在于解耦, 就是让耦合的双方都依赖于抽象而不是具体。从而使得各部分的变化都不会影响到对方。
经典例子: awt中的事件模型.
0 0
- 设计模式读书笔记之观察者模式(Observer)
- 设计模式读书笔记之观察者模式(Observer)
- 设计模式之Observer(观察者)
- 设计模式之Observer 观察者
- 设计模式之观察者模式(Observer模式)
- 设计模式读书笔记:Observer(观察者)
- Java设计模式之Observer(观察者)模式
- Java设计模式之Observer 观察者模式
- 设计模式之Observer观察者模式
- 设计模式之observer(观察者模式)
- 设计模式之Observer(观察者模式)
- 设计模式之Observer(观察者模式)
- Java设计模式之Observer-观察者模式
- 设计模式之(十四)观察者模式Observer
- 设计模式之观察者模式(Observer Pattern)
- 【设计模式】之 Observer 观察者模式
- 设计模式之七 --- 观察者模式(Observer)
- 【设计模式】之观察者模式(Observer)
- 如何制作BUNDLE
- 让一个div在页面底下,居中
- json转成复杂的bean
- Android KeyCode列表
- Docker网络详解及pipework源码解读与实践
- 设计模式读书笔记之观察者模式(Observer)
- 搜索算法总结
- 什么是用户画像?
- web.xml设置:servlet-name url-pattern
- Hibernate原生SQL查询多表关联,SQL语句要注意的问题
- CSS布局之水平垂直居中
- Android 点击按钮同时更换按钮背景颜色和按钮文本颜色
- web中添加ajax框架dwr
- ORACLE表空间的导入与导出