【每天一个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类型,为了表达该元素真实的数据 ...
最新文章
- 迷宫问题输出超限反思
- 线程安全与可重入函数的区别及联系
- android插件化-apkplug框架基本结构-01
- Firefox Quantum支持跨浏览器插件架构
- 用Tableau画延展条形图(Extended Bar Chart)
- linux系统子目录至少,Linux复习题(附答案)
- verilog中function用法_verilog中的function用法与例子
- POJ 3259 Wormholes(bellman_ford,判断有没有负环回路)
- python class def try_python 中exception,class学习
- 【KDD20】主题模型在图模型中的应用专题
- spotify注册服务器,【评测】Cocktail Audio N25:集USB解码、TIDAL、Spotify、NAS 串流、音乐服务器于......
- Matlab中fprintf函数使用
- javascript 忽略 报错_JavaScript数据类型中易被忽略的点
- 中国软件,从繁荣走向文明
- 流畅的python 14章可迭代的对象、迭代器 和生成器
- 若再斗几合 瑞星杀毒软件升级包
- .NET WebApi调用微信接口Https请求工具类
- CSDN超级实习生计划——大厂实习直通车,年薪最高可达30W。2022正式开启~
- APP免费图片图标大全
- 嵌入式linux在windows,在Windows下启动Linux-嵌入式系统-与非网