博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
观察者模式(订阅/注销模式)
阅读量:6288 次
发布时间:2019-06-22

本文共 1568 字,大约阅读时间需要 5 分钟。

package lyj.main;

public class App {

public static void main(String[] args) {

Subject subject=new Subject();
//广播接收器,观察者,订阅者
A a=new A(subject);
B b=new B(subject);
subject.setState(9);
subject.setState(999);
}
}

 

package lyj.main;

import java.util.ArrayList;

/**

* 主题
* @author Administrator
*
*/
public class Subject {

//状态

private int state;
public void setState(int state){
this.state=state;
notifiyobserver();
}
public int getState(){return state;}
//所有的观察者
private ArrayList<Observer> observers=new ArrayList<>();
/**
* 订阅
*/
public void attach(Observer observer){
observers.add(observer);
}
/**
* 注销
*/
public void deattach(Observer observer){
observers.remove(observer);
}
/**
* 通知所有观察者
*/
public void notifiyobserver(){
for(Observer observer:observers){
observer.updata();
}
}
}

 

package lyj.main;

/**
* 观察者,当主题改变的时候,得到视图的最新状态(视图)
* @author Administrator
*
*/

public abstract class Observer {

//观察的主题

Subject subject;
/**
* 父类订阅主题
* @param subject
*/
public Observer(Subject subject) {
// TODO Auto-generated constructor stub
this.subject=subject;
subject.attach(this);
}
/**
* 状态改变
*/
public abstract void updata();
}

 

package lyj.main;

public class A extends Observer{

public A(Subject subject) {

super(subject);
}

@Override

public void updata() {
System.out.println("A"+subject.getState());
}

}

 

package lyj.main;

public class B extends Observer{

public B(Subject subject) {

super(subject);
}

@Override

public void updata() {
// TODO Auto-generated method stub
System.out.println("B"+subject.getState());
}

}

转载于:https://www.cnblogs.com/lyjsmile/p/5252268.html

你可能感兴趣的文章
低碳出行下的新宠儿:多方通信下的云视频会议
查看>>
京东发布物联网战略 将推出智子万家升级体验计划
查看>>
昆明:“互联网+政务”助推智慧城市建设
查看>>
soapUI的Mocservice仿真测试问题
查看>>
DBImport v3.44 中文版发布:数据库数据互导及文档生成工具(IT人员必备)
查看>>
说说SDN和云平台对接
查看>>
物联网给中国智造插上翅膀
查看>>
51Testing专访史亮:测试人员在国外
查看>>
“黑科技”安防界遍地开花 公安实战如何应用?
查看>>
《C++编程规范:101条规则、准则与最佳实践》——2.9 确保资源为对象所拥有。使用显式的RAII和智能指针...
查看>>
《Web异步与实时交互——iframe AJAX WebSocket开发实战》—— 2.1 简介
查看>>
《SOA达人迷》目录—导读
查看>>
Apache Kylin权威指南1.5 Apache Kylin的主要特点
查看>>
Java IO: 其他字节流(上)
查看>>
Java中的锁
查看>>
节省60%费用!巧用阿里云归档存储降低基因测序成本
查看>>
《Adobe Dreamweaver CS6中文版经典教程》——1.7 创建自定义的快捷键
查看>>
linux学习笔记三: secureCRT小键盘输入数字键的时候,出现字母的解决方法:
查看>>
beego打印请求http内容
查看>>
手机自动化测试:Appium源码分析之跟踪代码分析二
查看>>