最简单的观察者模式--转载
2015-10-27 17:06
302 查看
public class ObserveTest {
public static void main(String[] args) {
Boss boss = new Boss("刷新");
boss.attach(new NBAObserver(boss));
boss.attach(new FIFAObserver(boss));
boss.notifyThem();
}
}
abstract class Observer{
public Subject mSubject;
public Observer(Subject s){
mSubject = s;
}
public abstract void update();
}
abstract class Subject{
String mInfo;
public abstract void attach(Observer o);
public abstract void detach(Observer o);
public abstract void notifyThem();
}
class NBAObserver extends Observer{
public NBAObserver(Subject s) {
super(s);
}
public void update() {
System.out.println("NBA hear:"+mSubject.mInfo);
}
}
class FIFAObserver extends Observer{
public FIFAObserver(Subject s) {
super(s);
}
public void update() {
System.out.println("FIFA hear:"+mSubject.mInfo);
}
}
class Boss extends Subject{
ArrayList<Observer> mList = new ArrayList<Observer>();
public Boss(String info){
mInfo = info;
}
public void attach(Observer o) {
mList.add(o);
}
public void detach(Observer o) {
mList.remove(o);
}
public void notifyThem() {
for (Observer o : mList) {
o.update();
}
}
}
public static void main(String[] args) {
Boss boss = new Boss("刷新");
boss.attach(new NBAObserver(boss));
boss.attach(new FIFAObserver(boss));
boss.notifyThem();
}
}
abstract class Observer{
public Subject mSubject;
public Observer(Subject s){
mSubject = s;
}
public abstract void update();
}
abstract class Subject{
String mInfo;
public abstract void attach(Observer o);
public abstract void detach(Observer o);
public abstract void notifyThem();
}
class NBAObserver extends Observer{
public NBAObserver(Subject s) {
super(s);
}
public void update() {
System.out.println("NBA hear:"+mSubject.mInfo);
}
}
class FIFAObserver extends Observer{
public FIFAObserver(Subject s) {
super(s);
}
public void update() {
System.out.println("FIFA hear:"+mSubject.mInfo);
}
}
class Boss extends Subject{
ArrayList<Observer> mList = new ArrayList<Observer>();
public Boss(String info){
mInfo = info;
}
public void attach(Observer o) {
mList.add(o);
}
public void detach(Observer o) {
mList.remove(o);
}
public void notifyThem() {
for (Observer o : mList) {
o.update();
}
}
}
相关文章推荐
- Unity3D的四种坐标系
- 数据库知识点笔记
- 动态设置label的高度
- uboot中,nfs挂载的bootargs
- Android通过webservice连接SQLServer 详细教程(数据库+服务器+客户端)
- 表单按回车自动提交(转)
- iOS开发UI篇—Quartz2D使用(绘图路径)
- 牛逼的ios在github上的库
- 3.14
- 变更管理、配置管理及风险管理的重点
- HTML5+CSS3学习(-)创建HTML5
- <input type=button> 跳转页面
- 保持优势的16字箴言
- Java设计模式1——策略模式(Strategy Pattern)
- 理解javascript闭包
- 20135223何伟钦-第三章家庭作业
- 【Python】Python-skier游戏[摘自.与孩子一起学编程]
- Ehcache(05)——缓存的查询
- 001.FKPerson 类的接口文件
- 002.FKPerson 类的实现文件