设计模式--观察者模式
来源:互联网 发布:windows程序设计算c 编辑:程序博客网 时间:2024/05/24 13:28
1 观察者模式定义了一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,这个主题对象在变化时,会通知所有的观测者对象,使他们能自动更细自己。具体代码如下:
观测者抽象类:
public abstract class Observer { protected String name; protected Subject subject; public Observer(String name, Subject subject) { this.name = name; this.subject = subject; } public abstract void update();}
两个实现类:
public class StockObserver extends Observer{ public StockObserver(String name, Subject subject) { super(name, subject); // TODO Auto-generated constructor stub } @Override public void update() { // TODO Auto-generated method stub System.out.println(name+"关闭炒股软件,继续工作。。。"); }}public class NBASObserver extends Observer{ public NBASObserver(String name, Subject subject) { super(name, subject); // TODO Auto-generated constructor stub } @Override public void update() { // TODO Auto-generated method stub System.out.println(name+subject.getAction()+"关闭NBA直播,继续工作。。。"); }}
通知者接口
public abstract class Subject { protected String action; public List<Observer> lstObserver=new ArrayList<Observer>(); public Subject(String action) { this.action = action; } public void add(Observer observer){ lstObserver.add(observer); } public void setAction(String action) { this.action = action; } public String getAction(){ return this.action; } public void remind(){ for (Observer observer : lstObserver) { observer.update(); } }}
两个实现类(可将remind()交给子类实现,):
public class NBASObserver extends Observer{ public NBASObserver(String name, Subject subject) { super(name, subject); // TODO Auto-generated constructor stub } @Override public void update() { // TODO Auto-generated method stub System.out.println(name+subject.getAction()+"关闭NBA直播,继续工作。。。"); }}public class StockObserver extends Observer{ public StockObserver(String name, Subject subject) { super(name, subject); // TODO Auto-generated constructor stub } @Override public void update() { // TODO Auto-generated method stub System.out.println(name+"关闭炒股软件,继续工作。。。"); }}
看观察者模式看得头有点懵逼,据说好像是Spring依赖倒转的原理,未完待续。。。
参考书籍《大话设计模式》
阅读全文
0 0
- 模式设计:观察者模式
- 设计模式-----观察者模式
- 设计模式-观察者模式
- 设计模式--观察者模式
- 设计模式:观察者模式
- 设计模式-----观察者模式
- 设计模式:观察者模式
- 设计模式-观察者模式
- 设计模式 观察者模式
- 设计模式-观察者模式
- 设计模式-【观察者模式】
- 设计模式-观察者模式
- 设计模式 -- 观察者模式
- 设计模式-观察者模式
- 【设计模式】观察者模式
- 设计模式- 观察者模式
- 设计模式- 观察者模式
- 设计模式--观察者模式
- js禁用浏览器后退功能、自动刷新页面
- 【Leetcode】【python】Remove Duplicates from Sorted Array/Remove Duplicates from Sorted Array II
- 统计文本中某些词出现的次数
- 【剑指offer】面试题4:二维数组的查找
- Python eval函数
- 设计模式--观察者模式
- 有趣的宏定义
- ES6 函数的参数设置默认值
- docker之windows10安装步骤
- 二叉树的先序递归创建和遍历
- java单例模式单写法
- Python 可变变量与不可变变量
- Learning Of JDBC About The Java&Mysql
- 数据库索引的原理、特点及用法