简单理解观察者模式
来源:互联网 发布:系统格式化数据恢复 编辑:程序博客网 时间:2024/05/22 11:49
观察者模式是一种一对多的依赖关系,设置了多个观察者对象来监视被观察对象的状态,当被观察对象发生变化时候,通知所有观察对象来相应这种变化。 Observable 被观察对象需要继承此类,以下方法均为此类方法 1. 新增观察者方法 addObserve 2. 标志被观察者变化 setChange 3. 告知观察者 notifyObservers Observer 观察者需要实现这个接口,并且实现其中的update方法作为当被观察者发生变化时候的响应。
下面提供一个例子
存在一个供货商为淘宝和京东供货,我们认为供货商为被观察对象,
当新增一种产品时,作为观察者对象的淘宝和京东也要将新增产品上架销售。
被观察者代码:
import java.util.ArrayList;import java.util.List;import java.util.Observable;import java.util.Observer;public class ProductList extends Observable {private List<String> productList = null; //产品列表private static ProductList instance; //类的唯一实例private ProductList(){}; //构造方法私有化,不允许在类外new对象/** * 取得了唯一实例,单例模式。 * @return */public static ProductList getInstance(){if(instance == null){instance = new ProductList();instance.productList = new ArrayList<String>();}return instance;}/** * 新增观察者接口 */public void addProductListObserver(Observer observer){this.addObserver(observer);}/** * 新增产品 * 核心方法为: * setChanged 设置内部标志,指示被观察对象发生变化。 * notifyObservers 通知各个观察者对象。 */public void addProduct(String newProduct){productList.add(newProduct);this.setChanged();//设置被观察对象发生变化this.notifyObservers(newProduct);//通知观察者,并传递新产品}}
观察者代码
import java.util.Observable;import java.util.Observer;public class TaoBaoObserver implements Observer {@Overridepublic void update(Observable o, Object Product) {String newProduct = (String) Product;System.out.println("TB新增产品:" +newProduct);}}import java.util.Observable;import java.util.Observer;public class JingDongObserver implements Observer {@Overridepublic void update(Observable o, Object Product) {String newProduct = (String) Product;System.out.println("JD新增产品:" +newProduct);}public static void main(String[] args) {ProductList observable = ProductList.getInstance(); // 创建被观察对象JingDongObserver jdObserver = new JingDongObserver();TaoBaoObserver tbObserver = new TaoBaoObserver();observable.addObserver(jdObserver);observable.addObserver(tbObserver);observable.addProduct("新增产品1");}}
阅读全文
0 0
- 简单理解观察者模式
- 设计模式之观察者模式简单理解
- 简单理解设计模式之观察者模式
- 设计模式(1)观察者模式简单理解
- 观察者模式的理解
- 观察者模式快速理解
- 观察者模式理解
- 观察者模式理解
- 快速理解观察者模式
- 观察者模式的理解
- 简单观察者模式
- 简单观察者模式
- 观察者模式简单介绍
- 观察者模式。简单demo
- 观察者模式简单例子
- 观察者模式简单总结
- 观察者模式简单介绍
- 观察者模式简单实现
- 如何制作swift framework
- 响应式和自适应的区别
- LeetCode 406. Queue Reconstruction by Height (Medium)
- hadoop是大数据火爆的助燃剂
- leetcode 117. Populating Next Right Pointers in Each Node II BFS广度优先遍历
- 简单理解观察者模式
- [PDF]AI 机器学习 深度学习 经典书籍汇总下载
- AppSettings 的使用
- Open Refine能学到什么
- 从程序员到CTO的Java技术路线图
- Python学习笔记——文件操作
- 解决Sources for 'Android API 26 Platform' not found
- 财务预警项目总结
- 牛顿-莱布尼茨公式