这是设计模式问答1的连载。在这个系列,我们将覆盖到解释器、迭代器、调停者、备忘录和观察者模式。如果你还没有阅读过我之前的系列,你可以随时从下面开始设计模式问答1:工厂模式,抽象工厂模式,构造者模式,原型模式,单例模式,命令模式设计模式问答3:状态模式,策略模式,访问者模式,适配器模式,享元模式设计模...
分类:
其他好文 时间:
2015-02-26 20:13:24
阅读次数:
152
假如有A窗体,有一个计时器B窗体,也有一个计时器。要求B窗体的计时器和A窗体同步。A窗体是主界面,B窗体是子界面方案1:要使得B窗体和A窗体保持同步的计时器,那么在启动B窗体的时候,可以将A窗体的计时器的间隔作为B窗体的构造函数的参数传递或者将A窗体的间隔保存到文件中,在B窗体加载之后,从配置中读取...
分类:
其他好文 时间:
2015-02-26 11:24:39
阅读次数:
126
观察者模式定义了对象之间的一对多依赖,当一个对象改变状态时,他的所有的依赖者都会收到通知并自动更新;
定义主题,主题的功能是持有观察者的引用,提供注册、取消注册和通知,并且有状态;观察者实现接口中的update方法,必须注册具体主题;
JDK自带了对观察者的支持功能
被观察者Observable对象,提供add/delete/notifyObserver()和setChanged()设...
分类:
其他好文 时间:
2015-02-25 17:10:24
阅读次数:
153
<?php
/**
*3.2观察者模式
*定义:
* 它定义了一种一对多的依赖关系,让多个观察者
* 对象同时监听某一个主题对象(通知者)。这个
* 主题对象在状态发生变化时,会通知所有观察者
* 对象,使它们能够自动更新自己。
*角色:
* 1.抽象通知者
* 职责:它把..
分类:
其他好文 时间:
2015-02-17 23:41:05
阅读次数:
138
先考虑需要实现的基本功能: 在任意一个地方增加一个消息的listener,则当这个消息被broadcast的时候,所有的listener都应该收到。考虑到delegate(我的理解是本身就是为实现观察者模式而出现的类),另外有个dict保存消息名和Delegate的对应。定义一个static消息类M...
分类:
编程语言 时间:
2015-02-15 12:00:39
阅读次数:
381
我们可以用一个生活中的情景来认识一下观察者模式.
在这个时代,可能只有我们家里的老年人还保留着每天看报纸的习惯.报社负责生产内容,把它们组织到一张报纸上,每天进行印刷,然后送到每一个花钱订阅了报纸的用户家里.这样老人家就可以浏览一下每天发生的事情了.
这就是观察者模式最贴切的比喻.订阅者和报社是一对多的关系,每天只要更新了内容,就会统一把报纸送到用户的手里,当然,如果你不想订阅...
分类:
编程语言 时间:
2015-02-13 16:33:29
阅读次数:
166
/**
Java观察者模式的场景:一个女孩洗澡,被很多男孩偷看。
女孩洞察后,搜索坏男孩,然后继续洗澡。
三个类:Boy,Girl还有主类MainClass。
*/
/*
男孩
Boy.java
*/
import java.util.Observable;
import java.util.Observer;
public class Boy implements Observer{
...
分类:
编程语言 时间:
2015-02-12 22:53:25
阅读次数:
219
<?php
/**
1. 概述
又称为发布-订阅(Publish-Subscribe)模式、模型-视图(Model-View)模式、源-监听(Source-Listener)模式、或从属者(Dependents)模式
2. 解决的问题
将一个系统分割成一个一些类相互协作的类有一个不好的副作用,那就是需要维护相关对象间的一致性。我们不希望为了维持一致性而使各类紧密耦合,这样...
分类:
Web程序 时间:
2015-02-12 18:28:19
阅读次数:
132
1. 定义 定义对象间的一对多的关系,当一个对象的状态改变时,所有依赖它的对象都得到通知并自动更新。2. 类图 3. 实例 package com.jerry.designpattern;/** * * @author Jerry * @date 2015年1月21日 下午3:40:21 *...
分类:
其他好文 时间:
2015-02-11 21:56:01
阅读次数:
114
最近看了看azkaban的代码,发现有两个设计模式比较巧妙,一个是在webServer端处理用户请求的servlet的类结构,一个是在execServer中使用的观察者模式。
1、webServer端的servlet的层次结构
如下图,下面是webServer提供的所有的servlet信息:
AbstractAzkabanServlet类继承自HttpServlet,我们一般...
分类:
其他好文 时间:
2015-02-11 18:35:45
阅读次数:
1414