设计模式 #2:观察者模式

Posted on 2016-7-12 in Code • Tagged with code, pythonLeave a comment

概括

观察者模式 = 发布者(publisher) + 观察者(observer / subscriber)

模式定义

观察者模式定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。

例子:气象监测应用

建立下一代 Internet 气象观察站。该气象站必须建立在 WeatheData 对象上,由 WeatherData 对象负责追踪目前的天气状况(温度、湿度、气压)。 对问题进行分析,发现我们要做的是: 建立一个应用,有三种布告板,分别显示目前的状况、气象统计及简单的预报。 当 WeatherObject 对象获得最新的测量数据时,三种布告板必须实时更新。 * 系统必须可扩展,让其他开发人员可以建立定制的布告板。

解决方案1

subject.py

class Subject(object):
    '''Subject interface class'''
    def register_observer ...
Continue reading

设计模式 #1: 策略模式

Posted on 2016-7-6 in Code • Tagged with code, pythonLeave a comment

这是我有关图书 Head First 设计模式 的笔记,因为我刚开始学 Java,很多特性还不熟,所以这里选择用 Python 来实现。

定义

策略模式(strategy pattern)定义了算法簇,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。

起始例子

class Duck(object):
    def quack(self):
        print "quack"
    def swim(self):
        print "swim"
    def display(self):
        raise NotImplementedError("abstract display")


class MallardDuck(Duck):
    def display(self):
        print "green"


class RedheadDuck ...
Continue reading