<深入浅出设计模式>学习笔记第二章 需求: 开发一套气象监测应用,如图: 气象站,目前有三种装置,温度.湿度和气压感应装置. WeatherData对象追踪气象站的数据,并更新到布告板,布告板(目前是三个:目前状况.气象统计.天气预报)用来显示目前的天气状况给用户. 初步设计 目前的要求: 1.其中有三个方法分别获得气温.湿度和气压的数据. 2.一旦气象测量被更新,那么这个measurementsChanged()方法就会被调用. 3.一旦有新的数据,者三个布告板(暂时三个)就会马上更新. 4…
前言 观察者模式也是对象行为模式的一种,又叫做发表-订阅(Publish/Subscribe)模式.模型-视图(Model/View)模式. 咱们目前用的最多的就是各种MQ(Message Queue)都是基于这个模式的思想来实现的,生产者产生数据放到一个队列中,消费者观察生产者的消息队列的变化,从而接收消息,执行消费者本身的逻辑. 观察者模式 概念介绍 观察者模式定义了一个一对多的依赖关系,让一个或多个观察者对象监察一个主题对象.这样一个主题对象在状态上的变化能够通知所有的依赖于此对象的那些观…
前言 前两天学习了weak_ptr以后还是不甚明了,一则需要实际应用去锤炼,二来就是不懂观察者模式. 正文 观察者模式又叫发布-订阅模式,定义了一种一对多的依赖关系,让多个观察者对象同时监听某一主题对象,这个主题对象在状态发生改变时,会通知所有的观察者对象,使他们能够自动更新自己. 通过一张visio的UML图片介绍一下子功能关系. subject类:抽象通知者类,一般用一个抽象类或者接口实现,把所有对观察者的引用都放到一个集合里,每个抽象通知者类可以有任意数量的观察者,抽象通知者类提供一个接口…
1.观察者模式又叫做发布-订阅模式. 2.观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象.这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己. 3.使用观察者模式的好处:维护相关对象间的一致性.我们不希望为了维持一致性而使各类紧密耦合,这样会给维护.扩展和重用都带来不便.什么时候使用观察者模式:当一个对象的改变需要同时改变其他对象的时候,而且它不知道具体有多少对象有待改变时,应该考虑使用观察者模式. private static void M…
什么都不说,先看代码: interface userOperateImpl { public function operate($username); } class userLoginLog implements userOperateImpl { public function operate($username) { echo '用户名为 ['.$username.'] 的用户登陆记录日志<br/>'; } } class UserLoginPush implements userOpe…
一.概述 Java 的Awt是 Observer模式,现用Java自己模拟awt中Button的运行机制 二.代码 1.Test.java import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; public class Test { public static void mai…
1.AWT简单例子 TestFrame.java import java.awt.Button; import java.awt.Frame; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowEvent; import java.awt.event.WindowListener; public class TestFrame extends F…
一.概述 1.目标:读取properties文件改成单例模式 二.代码 1.Test.java class WakenUpEvent{ private long time; private String location; private Child source; public WakenUpEvent(long time, String location, Child source) { super(); this.time = time; this.location = location;…
一.概述 childe类中的是关联监听者dad的,若要再增加监听者,会很不方便,且要修改代码.好的方法是封装监听者类,用addListener()方法动态添加监听者 二.代码 1.Test.java class WakenUpEvent{ private long time; private String location; private Child source; public WakenUpEvent(long time, String location, Child source) {…
把小孩醒来时的具体情况封装成事件类 Test.java class WakenUpEvent{ private long time; private String location; private Child source; public WakenUpEvent(long time, String location, Child source) { super(); this.time = time; this.location = location; this.source = sourc…