java中订阅者模式
来源:互联网 发布:python数据科学入门 编辑:程序博客网 时间:2024/06/17 13:18
参考http://blog.csdn.net/android_cmos/article/details/50489055
基本概念
抽象主题:所有的观察者对象的引用在一个集合中,每个主题都可以有任何数量的观察者,抽象对象提供一个接口,可以增加和删除观察者。(女神类)
具体对象:将有关状态存入具体观察者对象,在具体主题内部状态改变时,给所有登记过的观察者发送通知(小红-一个女神)
抽象观察者:为所有具体观察者定义一个接口,在得到主题通知时更新自己。(一个屌丝对象)
具体观察者:实现抽象观察者所需要的更新接口(小明和老王两个屌丝)
具体代码实现:
女神:
package test_dingyuezhe;//被观察者public interface Abatract_model {//添加观察者public void AddGuanChaZhe(Abstract_guanChaZhe a);//删除观察者public void DelteteGuanChaZhe(Abstract_guanChaZhe a);//通知观察者public void NotifyGuanChaZhe(String data);}屌丝:
public interface Abstract_guanChaZhe {//收到抽象主题发出的信息public void ReceiveData(String data);}小红-一个女神:
/* * 小红--一个主题---订阅的对象 */public class XiaoHong implements Abatract_model{//观察者的集合private List<Abstract_guanChaZhe> mList=new ArrayList<>();@Overridepublic void AddGuanChaZhe(Abstract_guanChaZhe a) {// TODO Auto-generated method stub//添加一个观察者对象mList.add(a);}@Overridepublic void DelteteGuanChaZhe(Abstract_guanChaZhe a) {// TODO Auto-generated method stubmList.remove(a);}@Overridepublic void NotifyGuanChaZhe(String data) {// TODO Auto-generated method stubfor(Abstract_guanChaZhe guancha:mList){guancha.ReceiveData(data);}}}
小明-一个屌丝:
//其中一个观察者public class XiaoMing implements Abstract_guanChaZhe{@Overridepublic void ReceiveData(String data) {// TODO Auto-generated method stubif(data.equals("我病了")){System.err.println("小明说多喝热水");}}}
老王-一个屌丝:
public class LaoWang implements Abstract_guanChaZhe{@Overridepublic void ReceiveData(String data) {// TODO Auto-generated method stubif(data.equals("我病了")){System.err.println("老王说我就去你家");}}}测试类:
public class MyTest {public static void main(String[] args) {//小红说我病了,看小明和老王的表现XiaoMing xiaoming=new XiaoMing();LaoWang laownag=new LaoWang();XiaoHong xiaohong=new XiaoHong();xiaohong.AddGuanChaZhe(laownag);xiaohong.AddGuanChaZhe(xiaoming);xiaohong.NotifyGuanChaZhe("我病了");xiaohong.DelteteGuanChaZhe(xiaoming);xiaohong.NotifyGuanChaZhe("我病了");}}输出信息:
老王说我就去你家
小明说多喝热水
老王说我就去你家
0 0
- java中订阅者模式
- 发布者订阅者模式
- CEGUI订阅者模式
- 订阅者模式
- 在Unity3D中基于订阅者模式实现事件机制
- java设计模式-观察者(发布-订阅)模式
- [转] 委托 订阅者模式
- angular中发布/订阅模式详解
- java 观察者模式——主题订阅
- 订阅者模式(观察者模式)
- 二、观察者模式/订阅者模式
- js 订阅者模式(观察者模式)
- 观察者模式与发布订阅者模式
- C#、最简单、事件委托、订阅事件、订阅者模式
- java笔记--设计模式之观察者(订阅/发布)模式
- java设计模式-观察者模式(广播机制,消息订阅)
- Java观察者模式以及与订阅发布者模式区别
- ZMQ(ZeroMQ)中订阅者和发布者模式的编写(PUB_SUB)
- javascript设计模式【上】
- vue.js将unix时间戳转换为自定义时间格式
- redis主从配置笔记
- javascript设计模式【下】
- CQL(Cassandra Query Language)安全性
- java中订阅者模式
- hibernate自动建表
- Android关于listView的BaseAdapter以及三级优化
- javascript设计模式 使用ES6语法
- 写博客之缘由
- Xcode报错总结
- 欢迎使用CSDN-markdown编辑器
- 对象设计时如何选择“一对多”与“多对一”关系
- Android studio 试用小技巧