策略模式,让一个类的行为或其算法可以在运行时更改,策略是让实例化对象动态的更改自身的某些方法使用的是types.MethodType绑定。 说起策略的动态更改方法,就不得不对比一下元类的动态增加方法,元类是类的抽象,它负…
分类:python设计模式
16、Python与设计模式--模板模式
一、股票查询客户端 投资股票是种常见的理财方式,我国股民越来越多,实时查询股票的需求也越来越大。今天,我们通过一个简单的股票查询客户端来认识一种简单的设计模式:模板模式。根据股票代码来查询股价分为如下几个步骤:登录、设置…
11、Python与设计模式--桥梁模式
一、画笔与形状 在介绍原型模式的一节中,我们举了个图层的例子,这一小节内容,我们同样以类似画图的例子,说明一种结构类设计模式:桥梁模式。在一个画图程序中,常会见到这样的情况:有一些预设的图形,如矩形、圆形等,还有一个对象…
python设计模式(八):装饰模式
装饰模式指的是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。 在Python种实现动态扩展对象功能的方法,最简单的是通过复写__getattr__函…
22、Python与设计模式--状态模式
一、电梯控制器 电梯在我们周边随处可见,电梯的控制逻辑中心是由电梯控制器实现的。电梯的控制逻辑,即使简单点设计,把状态分成开门状态,停止状态和运行状态,操作分成开门、关门、运行、停止,那流程也是很复杂的。首先,开门状态不…
7、Python与设计模式--适配器模式
一、外包人员系统兼容 假设某公司A与某公司B需要合作,公司A需要访问公司B的人员信息,但公司A与公司B协议接口不同,该如何处理?先将公司A和公司B针对各自的人员信息访问系统封装了对象接口。 class ACpnStaff…
18、Python与设计模式--访问者模式
一、药房业务系统 假设一个药房,有一些大夫,一个药品划价员和一个药房管理员,它们通过一个药房管理系统组织工作流程。大夫开出药方后,药品划价员确定药品是否正常,价格是否正确;通过后药房管理员进行开药处理。该系统可以如何实现…
python设计模式(九):外观模式
# -*- coding:utf-8 -*-class API1: def Save(self):  …
python设计模式(七):组合模式
组合,将对象组合成树状结构,来表示业务逻辑上的[部分-整体]层次,这种组合使单个对象和组合对象的使用方法一样。 如描述一家公司的层次结构,那么我们用办公室来表示节点,则总经理办公司是根节点,下面分别由人事办公室、业务办公…
python设计模式(二):建造者模式
建造者,顾名思义是修建建筑的工人,按照基本的施工方式:打桩-浇筑框架-砌墙-装修,同样的施工流程却能造就千差万别的建筑,因为不同的材料、不同设计,可以表现出千差万别,这就是建造者模式的简要理解。 示例代码: # …
python设计模式(五):适配器模式——各种类接口的合并
适配器可以理解为万能接口,各种类可以通过这个接口然后被调用,达到万能转换的效果。 他的实现是以我们定义的适配器函数来分类,将各种类的不同方法注册到对应的分类函数中,调用的时候只需要使用分类名,这样就达到了适配所有类不同方…
17、Python与设计模式--迭代器模式
一、迭代器与生成器 今天的主角是迭代器模式。在python中,迭代器并不用举太多的例子,因为python中的迭代器应用实在太多了(不管是python还是其它很多的编程语言中,实际上迭代器都已经纳入到了常用的库或者包中)。…