为什么80%的码农都做不了架构师?>>>   

<p>Observer.java</p> <div id="scid:9D7513F9-C04C-4721-824A-2B34F0212519:613cf5c0-e32f-4bc0-9128-4562a774f1f0" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"><pre class="brush: java; gutter: true; first-line: 1; tab-size: 4; toolbar: true; width: 400px; height: 116px;" style=" width: 400px; height: 116px;overflow: auto;">package cn.foxeye.design.observer;

public interface Observer {

void update(String state);

} </pre><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin. http://dunnhq.com --></div>

<p>Subject.java</p>

<div id="scid:9D7513F9-C04C-4721-824A-2B34F0212519:85481259-b3a5-4731-9e08-0edbd5847752" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"><pre class="brush: java; gutter: true; first-line: 1; tab-size: 4; toolbar: true; width: 602px; height: 418px;" style=" width: 602px; height: 418px;overflow: auto;">package cn.foxeye.design.observer;

import java.util.ArrayList; import java.util.List;

public abstract class Subject {

private List&lt;Observer&gt; observers = new ArrayList&lt;Observer&gt;();public void attach(Observer observer) {this.observers.add(observer);System.out.println(&quot;Attached an Observer. &quot;);
}public void dettach(Observer observer) {this.observers.remove(observer);System.out.println(&quot;Remove an Observer.&quot;);
}public void notifyObservers(String state) {for (Observer observer : observers) {observer.update(state);}
}

} </pre><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin. http://dunnhq.com --></div>

<p>ConcreteObserver.java</p>

<div id="scid:9D7513F9-C04C-4721-824A-2B34F0212519:20b56b5f-32bd-4aa2-a61c-cc433a457380" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"><pre class="brush: java; gutter: true; first-line: 1; tab-size: 4; toolbar: true; width: 605px; height: 540px;" style=" width: 605px; height: 540px;overflow: auto;">package cn.foxeye.design.observer;

public class ConcreteObserver implements Observer {

private String name;
private String state;public ConcreteObserver(String name) {this.name = name;
}public void update(String state) {setState(state);System.out.println(name + &quot;状态修改为:&quot; + state);
}public String getState() {return state;
}public void setState(String state) {this.state = state;
}public String getName() {return name;
}public void setName(String name) {this.name = name;
}

} </pre><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin. http://dunnhq.com --></div>

<p>ConcreteSubject.java</p>

<div id="scid:9D7513F9-C04C-4721-824A-2B34F0212519:d7aa01ec-f20a-4b25-ae4b-0563db4042ea" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"><pre class="brush: java; gutter: true; first-line: 1; tab-size: 4; toolbar: true; width: 605px; height: 264px;" style=" width: 605px; height: 264px;overflow: auto;">package cn.foxeye.design.observer;

public class ConcreteSubject extends Subject {

private String state;public String getState() {return state;
}public void changeState(String state) {this.state = state;System.out.println(&quot;主题状态变为:&quot; + state);this.notifyObservers(state);
}

} </pre><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin. http://dunnhq.com --></div>

<p>ObserverDesignDemo.java</p>

<div id="scid:9D7513F9-C04C-4721-824A-2B34F0212519:c2553ba7-f9fb-4b0f-bc8a-6bc25875ff04" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"><pre class="brush: java; gutter: true; first-line: 1; tab-size: 4; toolbar: true; width: 628px; height: 309px;" style=" width: 628px; height: 309px;overflow: auto;">package cn.foxeye.design.observer;

public class ObserverDesignDemo {

public static void main(String[] args) {ConcreteSubject subject = new ConcreteSubject();for (int i = 0; i &lt; 10; i++) {Observer observer = new ConcreteObserver(&quot;张三&quot; + i);subject.attach(observer);}subject.changeState(&quot;已读&quot;);}

} </pre><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin. http://dunnhq.com --></div>

转载于:https://my.oschina.net/foxeye/blog/140331

设计模式-观察者模式(Observer)相关推荐

  1. java设计模式--观察者模式(Observer)

    java设计模式--观察者模式(Observer) java设计模式--观察者模式(Observer) 观察者模式的定义: 定义对象间的一种一对多的依赖关系.当一个对象的状态发生改变时,所有依赖于它的 ...

  2. 设计模式-观察者模式(Observer)-Java

    设计模式-观察者模式(Observer)-Java 目录 文章目录 1.前言 2.示例案例-多人联机对战游戏的设计 3.观察者模式概述 3.1.观察者模式定义 3.2.观察者模式结构 3.3.观察者模 ...

  3. 设计模式-观察者模式(Observer Pattern)

    设计模式-观察者模式 观察者模式是使用频率最高的设计模式之一,它用于建立一种对象与对象之间的依赖关系,一个对象发生改变时将自动通知其他对象,其他对象将相应作出反应.在观察者模式中,发生改变的对象称为观 ...

  4. 设计模式 - 观察者模式(Observer Pattern) Java内置 用法

    观察者模式(Observer Pattern) Java内置 用法 本文地址: http://blog.csdn.net/caroline_wendy/article/details/26601659 ...

  5. Android常见设计模式——观察者模式 (Observer Pattern)

    文章目录 1. 前言 2. 观察者模式 2.1 源码 2.2 结构 3. Android中的观察者模式 1. 前言 观察者模式是在代码框架中使用比较高的一个设计模式,常常又叫做订阅/发布模式.而通过这 ...

  6. 设计模式---观察者模式(Observer)和委托事件模型(DEM)

    1 引言 观察者模式,又名发布订阅模式,是一个一对多的关系,当被观察者发生某种变化,对应其观察者做出相应的改变.比如说,某学校研究生实验室有2个学生,2个学生某个上午在实验室,A在玩游戏,B在看电影, ...

  7. C++设计模式--观察者模式(Observer)

    概述 观察者模式,定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新. 适用场景 以下任一情况下可以使用观察者模式: 当一个抽象模型有两方面,其中一 ...

  8. 趣谈设计模式 | 观察者模式(Observer) :消息的发布与订阅

    文章目录 案例:文章推送 观察者模式 观察者模式的运作流程 观察者模式解决的问题 观察者模式大显身手 总结 要点 应用场景 生产者-消费者模型 VS 观察者模式 完整代码及文档 案例:文章推送 假设我 ...

  9. Java设计模式—观察者模式(Observer pattern)

    故事: 小雪是一个非常漂亮的女孩,漂亮的女孩总是有很多的追求者,而且追求者的队伍在不断的变动,随时有人进入这个队伍,也有人退出.男孩们追求女孩时总是表现出120%的关心,当小雪私自游玩时总是不断收到追 ...

  10. 设计模式:观察者模式--Observer

    一.什么是观察者模式 1.生活中的观察者模式 1.警察抓小偷 在现实生活中,警察抓小偷是一个典型的观察者模式「这以一个惯犯在街道逛街然后被抓为例子」,这里小偷就是被观察者,各个干警就是观察者,干警时时 ...

最新文章

  1. vsftpd用户配置 No.2
  2. TensorFlow 2.0发布在即,高级API变化抢先看
  3. 马斯克“口无遮拦”发推特又挨批,被指无视法院命令
  4. python小实验(1):字符串处理
  5. 大牛书单 | 数据库专题好书分享
  6. 《Python编程:从入门到实践》速查表
  7. C/C++—— int main(int argc,char* argv[])讲解
  8. php7扩展sphinx,php7进行安装sphinx简单记录
  9. 按键精灵Q语言-怎么使用自定义函数返回值
  10. eclipse 基础设置
  11. 大数据_Hbase-(数据读取流程_hbase读取效率比较慢的原因)---Hbase工作笔记0008
  12. 7-26 币值转换 (20 分)
  13. lcmgcd因数分解
  14. Android-7.0-Nuplayer概述
  15. EM算法 --入门级详解
  16. 如何拯救拖延症??11大招总有一招帮你搞定
  17. 自定义Java注解处理器
  18. 高性价比降噪耳机推荐,2023年降噪耳机排行榜推荐
  19. 大数据----2.基础环境搭建
  20. 码易众包平台致开源中国恶意剽窃的公开信

热门文章

  1. python获取用户输入的数字_Python 将用户输入的数字 提取整数谢谢
  2. 基础数学:关于二次无理数
  3. GraphViz:2 DOT语法和相关应用
  4. ajax使用json下拉框,ajax请求后台得到json数据后动态生成树形下拉框的方法
  5. 洲际的merlin怎么用_洲际merlin登陆
  6. CSS学习16之层级
  7. python中easygui最新下载教程_python怎么下载easygui
  8. MFC listctrl显示缩略图时索引问题和滚动条问题
  9. Spring 实践:AOP
  10. 一台电脑上同启动两个Tomcat的方式,windows/Linux配置