定义 将抽象和实现解耦,使得它们可以独立地变化。 桥梁模式关注的是抽象和实现的分离,使得它们可以独立地发展;桥梁模式是结构型模式,侧重于软件结构。而策略模式关注的是对算法、规则的封装,使得算法可以独立于使用它的用户而变化; 策略模式是行为型模式,侧重于对象行为。 设计模式其实就是一种编程思想,没有固定的结构。要区分不同的模式,要多从语义和用途的角度…
定义 定义一个操作中的算法的框(骨)架,而将算法中用到的某些具体的步骤放到子类中实现,使得子类可以在不改变算法结构的情况下重新定义该算法的某些特定步骤。这个定义算法骨架的方法就叫模板方法模式,简称模板模式。 模板模式的模型抽象 类图 代码框架 from abc import ABCMeta, abstractmethod # 引入ABCMeta和a…
定义 封装一些作用于某种数据结构中各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作。 核心思想在于:可以在不改变数据结构的前提下定义作用于这些元素的新操作。将数据结构和操作(或算法)进行解耦,而且能更方便地拓展新的操作。 访问模式的模型抽象 代码框架 from abc import ABCMeta, abstractmeth…
定义 运用共享技术有效地支持大量细粒度对象的复用。 享元模式(Flyweight Pattern): Flyweight 一词来源于拳击比赛,意思是“特轻量级”。 用在程序设计中,就是指享元模式要求能够共享的对象必须是轻量级对象,也就是细粒度对象,因此享元模式又称为轻量级模式。 享元模式以共享的方式高效地支持大量的细粒度对象,享元对象能做到共享的关…
定义 在不破坏内部结构的前提下捕获一个对象的内部状态,这样便可在以后将该对象恢复到原先保存的状态。 备忘模式的最大功能就是备份,可以保存对象的一个状态作为备份,这样便可让对象在将来的某一时刻恢复到之前保存的状态。 备忘模式的模型抽象 类图 精简版 升级版 区别之处 Memento 不只能备份一个属性,而且能备份一组(多个)属性。 Caretaker…
定义 将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。 命令模式的最大特点是将具体的命令与对应的接收者相关联(捆绑),使得调用方不用关心具体的行动执行者及如何执行,只要发送正确的命令,就能准确无误地完成相应的任务。就像军队,将军一声令下,士兵就得分秒不差,准确执行。 命令模式…
定义 简单工厂模式 专门定义一个类来负责创建其他类的实例,根据参数的不同创建不同类的实例,被创建的实例通常具有共同的父类,这个模式叫简单工厂模式(Simple Factory Pattern) 。 简单工厂模式又称为静态工厂方法模式。之所以叫“静态”,是因为在很多静态语言(如 Java、C++)中方法通常被定义成一个静态(static)方法,这样便…
定义 定义一系列算法,将每个算法都封装起来,并且使它们之间可以相互替换。策略模式使算法可以独立于使用它的用户而变化。 核心思想是:对算法、规则进行封装,使得替换算法和新增算法更加灵活。 策略模式的模型抽象 类图 模型说明 策略模式中主要有三个角色,在设计策略模式时要找到并区分这些角色。 上下文环境(Context):起着承上启下的封装作用,屏蔽上层…
定义 将一个类的接口变成客户端所期望的另一种接口,从而使原本因接口不匹配而无法一起工作的两个类能够在一起工作。 适配模式的作用: 接口转换,将原有的接口(或方法)转换成另一种接口。 用新的接口包装一个已有的类。 匹配一个老的组件到一个新的接口。 又叫变压器模式,也叫包装模式(Wrapper) 适配模式的模型抽象 代码框架 from abc impo…
定义 将一复杂对象的构建过程和它的表现分离,使得同样的构建过程可以获取(创建)不同的表现。 核心思想:将产品的创建过程与产品本身分离开来,使得创建过程更加清晰,能够更加精确地控制复杂对象的创建过程,让使用者可以用相同的创建过程创建不同的产品。 与工厂模式的区别 工厂模式关注的是整个产品(整体对象)的生成,即成品的生成;而构建模式关注的是产品的创建过…