定义 将一个类的接口变成客户端所期望的另一种接口,从而使原本因接口不匹配而无法一起工作的两个类能够在一起工作。 适配模式的作用: 接口转换,将原有的接口(或方法)转换成另一种接口。 用新的接口包装一个已有的类。 匹配一个老的组件到一个新的接口。 又叫变压器模式,也叫包装模式(Wrapper) 适配模式的模型抽象 代码框架 from abc impo…
定义 将一复杂对象的构建过程和它的表现分离,使得同样的构建过程可以获取(创建)不同的表现。 核心思想:将产品的创建过程与产品本身分离开来,使得创建过程更加清晰,能够更加精确地控制复杂对象的创建过程,让使用者可以用相同的创建过程创建不同的产品。 与工厂模式的区别 工厂模式关注的是整个产品(整体对象)的生成,即成品的生成;而构建模式关注的是产品的创建过…
定义 将对象组合成树形结构以表示“整体 - 部分”的层次结构关系。组合使得用户对单个对象和复合对象的使用具有一致性。 组合模式的模型抽象 代码框架 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):…