java设计模式--观察者模式应用场景
来源:互联网 发布:mysql 读法 编辑:程序博客网 时间:2024/05/03 12:26
观察者分为两种模式:推和拉
推模型是假定知道观察者需要什么数据,传这个数据过去;拉模型是不知道观察者需要什么数据,干脆把自身传给他,按需取值
应用场景如下:
订阅火车票之后,需要记录日志,也需要发送短信
如果常规写法,在订阅火车票内部实现,若以后还需要增加新功能则需要修改核心代码
推模式实现:
client.java 传的"ok"可以是任意字符串,也可以是subject的某一个字段,若为拉模式,只需要改为change(this)即可。
public static void main(String[] args) { Subject subject=new Subject(); LogObservers observer=new LogObservers(); MessageObservers observers=new MessageObservers(); subject.addObservers(observer); subject.addObservers(observers); subject.change("ok"); }subject.java
public class Subject {private List<Object> list = new ArrayList<Object>();public void addObservers(Object object) {list.add(object);}public void removeObservers(Object object) {list.remove(object);}public void change(String state) {System.out.println("观察者改变了!");for(Object object : list ) { if(object instanceof LogObservers) { ((LogObservers)object).doWork(state); }else{ ((MessageObservers)object).doWork(state); }}}}接口
public interface ITicketObserver {public void doWork(String state);}短信观察者
public class MessageObservers implements ITicketObserver {@Overridepublic void doWork(String state) { System.out.println("短信操作开始!更新状态"+state);}}日志观察者
public class LogObservers implements ITicketObserver {@Overridepublic void doWork(String state) { System.out.println("日志文件操作开始!更新状态"+state);}}
0 0
- java设计模式--观察者模式应用场景
- Java设计模式之《观察者模式》及应用场景
- 设计模式的应用场景(14)--观察者模式
- 观察者模式应用场景实例
- 观察者模式应用场景实例
- 观察者模式应用场景实例
- 观察者模式应用场景实例
- 观察者模式应用场景实例
- 观察者模式及应用场景
- 观察者设计模式应用
- 设计模式-观察者模式应用
- [设计模式]-观察者模式应用
- 设计模式应用场景
- 设计模式应用场景
- 设计模式应用场景
- 设计模式 应用场景
- 设计模式 应用场景
- 设计模式应用场景
- 获取手机型号
- 为了增加个域名,我想喊xxx我的国!艹
- JSP页面超链接跳转到Servlet后中文乱码解决
- Android线程安全问题总结
- 排序类
- java设计模式--观察者模式应用场景
- voice channel 0 circular buffer overflow问题的解决办法GlobalOffensive,CSGO
- Java装箱拆箱
- 排列、组合和全排列
- 【Pandas-Cookbook】07:数据清洗
- QT设置窗体透明
- title与h3的区别、b与strong的区别、i与em的区别?
- 2016年总结和2017年规划
- 计算机网络知识点