定义 将对象组合成树形结构以表示“整体 - 部分”的层次结构关系。组合使得用户对单个对象和复合对象的使用具有一致性。 组合模式的模型抽象 代码框架 from abc import ABCMeta, abstractmethod # 引入ABCMeta和abstractmethod来定义抽象类和抽象方法 class Component(metacla…
定义 提供一种方法顺序地访问一组聚合对象(一个容器)中的各个元素,而又不需要暴露该对象的内部细节。 迭代器一般至少有以下两种方法。 获取当前所指向的元素:current() 将指针移至下一个元素:next() 也可以增加一些方法,比如实现从后往前遍历。一些更为丰富的迭代器功能如下: 将指针移至起始的位置:toBegin() 将指针移至结尾的位置:t…
定义 为子系统中的一组接口提供一个一致的界面称为外观模式,外观模式定义了一个高层接口,这个接口使得这一子系统更容易使用。 核心思想:用一个简单的接口来封装一个复杂的系统,使这个系统更容易使用。 也叫门面模式 外观模式的模型抽象 类图 Facade 封装了子系统的复杂实现,给外部提供一个统一的接口,用户只需要通过 Facade 来访问子系统,而不用关…
定义 为其他对象提供一种代理以控制对这个对象的访问。 代理模式的模型抽象 代码框架 from abc import ABCMeta, abstractmethod # 引入ABCMeta和abstractmethod来定义抽象类和抽象方法 class Subject(metaclass=ABCMeta): """主题类…
定义 为避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求。将这些接收对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。 职责模式的设计思想 代码框架 from abc import ABCMeta, abstractmethod # 引入ABCMeta和abstractmethod来定义抽象类和抽象方法 class Req…
定义 用原型实例指定要创建对象的种类,并通过拷贝这些原型的属性来创建新的对象。 浅拷贝 copy() 深拷贝 deepcopy() 克隆模式的抽象模型 代码框架 from copy import copy, deepcopy class Clone: """克隆的基类""" def clo…
定义 确保一个类只有一个实例,并且提供一个访问它的全局方法。 单例模式的模型抽象 代码框架 方法 1:重写 __new__ 和 __init__ 方法 class Singleton(object): """单例实现方式一""" __instance = None __isFirstIni…
定义 动态地给一个对象增加一些额外的职责,就拓展对象功能来说,装饰模式比生成子类的方式更为灵活。 装饰模式的抽象模型 类图 代码 from abc import ABCMeta, abstractmethod # 引入ABCMeta和abstractmethod来定义抽象类和抽象方法 class Person(metaclass=ABCMeta):…
定义 用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 中介模式的模型抽象 代码框架 class InteractiveObject: """进行交互的对象""" pass class InteractiveOb…
定义 允许一个对象在其内部状态发生改变时改变其行为,使这个对象看上去就像改变了它的类型一样。 状态模式的模型抽象 代码框架 from abc import ABCMeta, abstractmethod # 引入ABCMeta和abstractmethod来定义抽象类和抽象方法 class Context(metaclass=ABCMeta): &…