天天看点

《大话设计模式》Python版代码实现

一、简单工厂模式

《大话设计模式》Python版代码实现

模式特点:工厂根据条件产生不同功能的类。

程序实例:四则运算计算器,根据用户的输入产生相应的运算类,用这个运算类处理具体的运算。

代码特点:c/c++中的switch...case...分支使用字典的方式代替。

     使用异常机制对除数为0的情况进行处理。

二、策略模式

《大话设计模式》Python版代码实现

模式特点:定义算法家族并且分别封装,它们之间可以相互替换而不影响客户端。

程序实例:商场收银软件,需要根据不同的销售策略方式进行收费

代码特点:不同于同例1,这里使用字典是为了避免关键字不在字典导致bug的陷阱。

三、装饰模式

《大话设计模式》Python版代码实现

模式特点:动态地为对象增加额外的职责

程序实例:展示一个人一件一件穿衣服的过程。

代码特点:无

四、代理模式

《大话设计模式》Python版代码实现

模式特点:为其他对象提供一种代理以控制对这个对象的访问。

程序实例:同模式特点描述。

五、工厂方法模式

《大话设计模式》Python版代码实现

模式特点:定义一个用于创建对象的接口,让子类决定实例化哪一个类。这使得一个类的实例化延迟到其子类。

程序实例:基类雷锋类,派生出学生类和志愿者类,由这两种子类完成“学雷锋”工作。子类的创建由雷锋工厂的对应的子类完成。

六、原型模式

《大话设计模式》Python版代码实现

模式特点:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。

程序实例:从简历原型,生成新的简历

代码特点:简历类resume提供的clone()方法其实并不是真正的clone,只是为已存在对象增加了一次引用。

     python为对象提供的copy模块中的copy方法和deepcopy方法已经实现了原型模式,但由于例子的层次较浅,二者看不出区别。

七、模板方法模式

《大话设计模式》Python版代码实现

模式特点:定义一个操作中的算法骨架,将一些步骤延迟至子类中。

程序实例:考试时使用同一种考卷(父类),不同学生上交自己填写的试卷(子类方法的实现)