【每天一个java设计模式(十八)】 - 观察者模式
观察者模式的定义:指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。这种模式有时又称作发布-订阅模式、模型-视图模式,它是对象行为型模式。
观察者模式存在一个控制主体,和许多的观察者,当控制主体状态改变时,所有观察者也都会做出反应。
观察者模式的实现;
1. 创建观察者抽象类
//抽象观察者
public abstract class Observer {public abstract void update();
}
2. 创建三个具体观察者
//观察者A
public class AObserver extends Observer {@Overridepublic void update() {System.out.println("观察者A做出反应");}
}
//观察者B
public class BObserver extends Observer {@Overridepublic void update() {System.out.println("观察者B做出反应");}
}
//观察者A
public class CObserver extends Observer {@Overridepublic void update() {System.out.println("观察者C做出反应");}
}
3. 创建控制主体
public class Subject {private List<Observer> observers = new ArrayList<>();private String state;public String getState() {return state;}public void setState(String state) {this.state = state;notifyAllObservers();}public void add(Observer observer){observers.add(observer);}public void notifyAllObservers(){for(Observer observer:observers){observer.update();}}
}
观察者模式测试
public class VisitorMain {public static void main(String[] args) {Subject subject = new Subject();subject.add(new AObserver());subject.add(new BObserver());subject.add(new CObserver());System.out.println("主体状态改变");subject.setState("change");}
}
- 什么是设计模式:【每天一个java设计模式(零)】 - 设计模式基本概念及七大设计原则
创建型模式
- 工厂模式:【每天一个java设计模式(一)】 - 工厂模式
- 抽象工厂模式: 【每天一个java设计模式(二)】 - 抽象工厂模式
- 单例模式:【每天一个java设计模式(三)】 - 单例模式
- 原型模式:【每天一个java设计模式(四)】 - 原型模式
- 建造者模式: 【每天一个java设计模式(五)】 - 建造者模式
结构型模型
- 适配器模式 : 【每天一个java设计模式(六)】 - 适配器模式
- 代理模式: 【每天一个java设计模式(七)】 - 代理模式模式
- 桥接模式:【每天一个java设计模式(八)】 - 桥接模式
- 装饰器模式:【每天一个java设计模式(九)】 - 装饰器模式
- 外观模式:【每天一个java设计模式(十)】 - 外观模式
- 享元模式:【每天一个java设计模式(十一)】 - 享元模式
- 组合模式:【每天一个java设计模式(十二)】 - 组合模式
行为型模式
- 模板模式:【每天一个java设计模式(十三)】 - 模板模式
- 解释器模式:【每天一个java设计模式(十四)】 - 解释器模式
- 命令模式:【每天一个java设计模式(十五)】 - 命令模式
- 策略模式:【每天一个java设计模式(十六)】 - 策略模式
- 状态模式:【每天一个java设计模式(十七)】 - 状态模式
下一节:
责任链模式:【每天一个java设计模式(十九)】 - 责任链模式
【每天一个java设计模式(十八)】 - 观察者模式相关推荐
- Java设计模式(十八):享元设计模式
1. 应用场景 当我们项目中创建很多对象,而且这些对象存在许多相同模块,这时,我们可以将这些相同的模块提取出来采用享元模式生成单一对象,再使用这个对象与之前的诸多对象进行配合使用,这样无疑会节省很多空 ...
- 【每天一个java设计模式(十五)】 - 命令模式
命令模式是一种数据驱动的设计模式,它属于行为型模式.请求以命令的形式包裹在对象中,并传给调用对象.调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令. 命令模式也就是一个 ...
- 【每天一个java设计模式(十四)】 - 解释器模式
解释器模式提供了评估语言的语法或表达式的方式,它属于行为型模式.这种模式实现了一个表达式接口,该接口解释一个特定的上下文. 解释器模式主要包括以下几个部分: 抽象表达式角色:定义解释器的接口,约定解释 ...
- 【每天一个java设计模式(完)】 - 四万字实现23种设计模式(附示例源码)
什么是设计模式:[每天一个java设计模式(零)] - 设计模式基本概念及七大设计原则 创建型模式 工厂模式:[每天一个java设计模式(一)] - 工厂模式 抽象工厂模式: [每天一个java设计模 ...
- 【每天一个java设计模式(十七)】 - 状态模式
在状态模式中,类的行为是基于它的状态改变的,允许对象在内部状态发生改变时改变它的行为,对象看起来好像修改了它的类.这种类型的设计模式属于行为型模式. 在状态模式中,我们创建表示各种状态的对象和一个行为 ...
- 【每天一个java设计模式(二十三)】 - 访问者模式
在访问者模式中,我们使用了一个访问者类,它改变了元素类的执行算法.通过这种方式,元素的执行算法可以随着访问者改变而改变.这种类型的设计模式属于行为型模式.根据模式,元素对象已接受访问者对象,这样访问者 ...
- 设计模式 ( 十六 ) 观察者模式Observer(对象行为型)
设计模式 ( 十五 ) 观察者模式Observer(对象行为型) 1.概述 一些面向对象的编程方式,提供了一种构建对象间复杂网络互连的能力.当对象们连接在一起时,它们就可以相互提供服务和信息. 通常来 ...
- 设计模式 ( 十八 ) 策略模式Strategy(对象行为型)
设计模式 ( 十八 ) 策略模式Strategy(对象行为型) 1.概述 在软件开发中也经常遇到类似的情况,实现某一个功能有多种算法或者策略,我们能够依据环境或者条件的不同选择不同的算法或者策略来完毕 ...
- 小白学JAVA之十八——泛型
小白学JAVA之十八--泛型 一. 基本概念 通常情况下集合中可以存放不同类型的对象,是因为将所有对象都看做Object类型放入的,因此从集合中取出元素时也是Object类型,为了表达该元素真实的数据 ...
最新文章
- 解决Transformer固有缺陷:复旦大学等提出线性复杂度SOFT
- 巨蟒python全栈开发-第10天 函数进阶
- STM32 PWM输出实验
- mysql 包 过程 job_mysql job实例全过程
- 基于easyui开发Web版Activiti流程定制器详解(六)——Draw2d的扩展(一)
- 多线程和线程池的基本知识总结
- Registry学习资料
- Atitit 各种设计图纸分类 目录 1. Atitit 常见软件设计图纸总结	2 1.1. Uml系列图纸	2 1.2. Er图 req需求图	2 1.3. Parametric diagr
- 【应用推荐】优效文件助手 everything的完美替代方案,更美观,更高效,更强大。
- feed机制、fetch机制
- 10.自动代理AutoProxy
- 华为鸿蒙与小米新系统,华为鸿蒙系统硬刚谷歌!小米也发布新系统:却选择和谷歌系统互补...
- 大数据破危险品物流难题 危化品污染有望“圈治”
- Python ln_LN型芯型联轴器
- java二维数组添加数据_我敢保证,全网没有再比这更详细的Java知识点总结了,送你啊...
- 计算机游戏翻译,百度翻译电脑版
- Chrome浏览器设置网站前自动加https
- 如何排查网络丢包问题
- arduinouno组装无人机_Arduino UNO四自由度机械臂制作
- bat 自动执行 SVN 命令