Java设计模式之观察者模式
2017-08-10 21:41
465 查看
模式介绍
观察者模式定义了一些列对象之间的一对多关系。当一个对象改变状态,其他依赖者都会收到通知。观察者模式提供了一种对象设计,让主题和观察者之间松耦合。应用场景
在生活中有很多观察者的模式应用,譬如我们用手机短信订阅移动公司的天气预报,我们和移动公司就是观察者和目标的关系,还有我们订阅微信公众号等等。例子说明
下面写一个关于微信公众号订阅的demo来演示一下观察者模式。uml图
观察者接口
/** * 观察者接口 */ public interface Observer { /** * 更新内容 * @param content */ public void update(String content); }
观察者A
/** * 观察者A */ public class A implements Observer{ @Override public void update(String content) { // TODO Auto-generated method stub System.out.println("我是A,我接收到的信息:"+content); } }
观察者B
/** * 观察者B */ public class B implements Observer{ @Override public void update(String content) { // TODO Auto-generated method stub System.out.println("我是B,我接收到的信息:"+content); } }
平台接口
/** * 平台接口 * @author S * */ public interface Platform { /** * 注册观察者 * @param o */ public void register(Observer o); /** * 移除观察者 * @param o */ public void unregister(Observer o); /** * ֪ͨ通知观察者 * @param content */ public void notifyMessage(String content); }
微信公众平台
/** * 微信公众平台 * @author S * */ public class WeChatPlatform implements Platform{ private List<Observer> list = new ArrayList<>(); @Override public void register(Observer o) { // TODO Auto-generated method stub list.add(o); } @Override public void unregister(Observer o) { // TODO Auto-generated method stub list.remove(o); } @Override public void notifyMessage(String content) { // TODO Auto-generated method stub for(int i=0;i<list.size();i++){ list.get(i).update(content); } } }
测试
/** * 观察者模式 * @author S * */ public class Main { public static void main(String args[]){ WeChatPlatform platform = new WeChatPlatform(); A a = new A(); B b = new B(); //用户订阅平台,添加观察者 platform.register(a); platform.register(b); //发送消息给订阅者 platform.notifyMessage("上午天气很好"); //用户取消订阅平台,移除观察者 platform.unregister(a); //发送消息给订阅者 platform.notifyMessage("下午要下雨"); } }
打印结果
我是A,我接收到的信息:上午天气很好 我是B,我接收到的信息:上午天气很好 我是B,我接收到的信息:下午要下雨
相关文章推荐
- JAVA设计模式--观察者模式
- Java设计模式之观察者模式
- java设计模式---观察者模式
- java设计模式之观察者模式
- java设计模式(3) - 观察者模式(Observer)
- JAVA设计模式(二)工厂模式与观察者模式
- Java设计模式之观察者模式
- Java设计模式之——观察者模式(Observer)
- 设计模式 - 观察者模式(Observer Pattern) Java内置 使用方法
- Java设计模式19——观察者模式
- Java设计模式知识学习-----观察者模式
- 设计模式--观察者模式初探和java Observable模式
- java设计模式之观察者模式
- 【Java常用类库】_观察者设计模式笔记
- 【java设计模式】观察者模式
- java设计模式--事件监听器模式和观察者模式
- Java设计模式之观察者模式
- java设计模式( Java设计模式之观察者模式 )
- JAVA设计模式(15) —<行为型>观察者模式(Observer)
- java设计模式之观察者模式