设计模式之观察者模式
来源:互联网 发布:js分页思路 编辑:程序博客网 时间:2024/06/14 20:51
使用场景:
1、对一个对象的改动需要同时改动其他对象,但又不知道具体有多少对象
2、当一个抽象模型有两个部分,其中一个部分依赖于另外一个部分,将两个部分封装到独立的对象中以实现独立的复用
3、当一个对象必须通知其他对象,但又不知道其他对象时谁
涉及到的有:
抽象观察者:定义为一个接口,其中可以有任意数量的观察者。可以添加、删除抽象观察者
抽象被观察者:定义为一个接口
具体观察者:实现抽象观察者接口,得到消息时通知自己。
具体被观察者:实现抽象被观察者接口。
抽象被观察者:
public interface Watched { void addWatcher(Wather wather); void remove(Wather wather); void notifyWatchers();}
具体被观察者:
eg:微信公众号为一个被观察者,在微信公众号中有新消息时,通知所有关注公众号的微信用户
public class WeChat implements Watched{ List<Wather> wathers = new ArrayList<Wather>(); public void addWatcher(Wather wather) { wathers.add(wather); } public void remove(Wather wather) { wathers.remove(wather); } public void notifyWatchers() { for(Wather w :wathers){ w.update(); } }}
抽象观察者:
public interface Wather { void update();}
具体观察者:
eg:微信用户,得到消息时候更新自己
public class WeChatUser implements Wather { private String name; public WeChatUser(String name){ this.name=name; } public void update() { System.out.println(name+" 收到更新消息!"); }}
测试类:
public class Test { public static void main(String[] args){ WeChatUser user1 = new WeChatUser("遇见"); WeChatUser user2 = new WeChatUser("sg"); WeChat weChat = new WeChat(); weChat.addWatcher(user1); weChat.addWatcher(user2); weChat.notifyWatchers(); }}
运行结果
阅读全文
0 0
- 设计模式之-观察者
- 设计模式之观察者
- 设计模式之观察者
- 设计模式之观察者
- 设计模式之观察者
- 设计模式之观察者
- 设计模式之观察者
- 设计模式之观察者
- 设计模式之观察者
- 设计模式之观察者
- 设计模式之观察者
- 设计模式之观察者模式
- 设计模式之观察者模式
- 设计模式之观察者模式
- 设计模式之观察者模式
- 设计模式之观察者模式
- 设计模式之观察者模式
- 设计模式之观察者模式
- Git-Bug分支的处理
- C++,vs中pow和宏的使用
- Html&css刷题知识记录
- Bootstrap常用类名总结
- Spring Cloud Eureka 服务治理(一)
- 设计模式之观察者模式
- hdu 6199 gems gems gems
- poj-3070 skiing
- Capacity Scheduler配置说明
- 微信小程序全局变量
- Spring 框架
- 归并排序 --C语言实现
- mysql常用函数汇总(转载)
- 【Java概念】抽象类(10)