标签: 设计模式

设计模式综述

创建型模式 Abstract Factory 抽象工厂模式: Builder 生成器模式: Factory Method 工厂方法模式: Prototype 原型模式: Singleton 单例模式: 结构型模式 Adapter 适配器模式:通过适配器模式,将第三方接口或对象转变成本系统内的接口或对象编码模式,即兼容第三方接口。除了单向适配器外,还有双向适配器。 Bridge 桥接模式: Com

单例模式

概述单例模式指保证一个类只生成一个实例,且在全局提供一个访问点。单例模式适用场景有:系统中仅有一个打印机后台处理程序、一个文件系统、一个 window 窗口管理器;应用中仅有一个线程池、全局缓存;数字滤波器仅有一个 A/D 转换器;会计系统仅为一家公司服务等。 创建单例的方式在于,由类自身提供创建单例的方法,并阻止创建其他实例。通过全局变量创建单例无法阻止创建出多个实例,且会造成命名空间污染。如果

迭代器模式

概述Iterator 迭代器模式提供一种顺序访问聚合对象中各元素的方法,同时不需要暴露该对象的内部表示。它也被视为 Cursor 模式。迭代器模式为遍历聚合对象提供了方法。基于迭代器模式,你可以实现具体的遍历操作。通常,Iterator 类定义了访问聚合对象的接口;iterator 保存了当前访问元素的引用。迭代器模式的简单示例如下: 将遍历机制 ListIterator 与迭代对象 List

装饰者模式

概述Decorator 装饰者模式也称为 Wrapper 包装器模式,指通过外嵌对象为内部对象添加一些功能。《设计模式:可复用面向对象软件的基础》给出的案例是 ScrollDecorator 装饰器为 TextView 文本框追加滚动功能。装饰器相较使用子类追加功能更为灵活。 结构 Component:内嵌对象。 ConcreteComponent:具体内嵌对象。 Decorator:装饰器,维持

中介者模式

概述设想表单组件联动的场景,若将表单组件实现为对象,且联动逻辑直接由这些对象通过方法实现的话,那样就会使这些对象有复杂的实现与关联。如果在表单组件之外制作一个中介者,表单组件的变更流入中介者,再由中介者更迭另一个表单组件的状态,如状态管理器或 form store 那般。 中介模式使用一个中介对象封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,且可以独立地改变它们之间的

享元模式

概述考虑一个文档,它有大量字符构成。如果对所有字符构建一个对象,那就会造成创建的对象过于繁多,从而导致内存上的消耗。《设计模式:可复用面向软件的基础》使用文档的物理结构对其进行建模,首先一个页面由 Column 列对象构成,Column 由 Row 行对象构成,Row 由字符对象构成。字符对象使用享元模式,即从 Flyweight Pool 中获取享元对象,再由 Row 对象将字符的位置等相关信息

命令模式

概述Command 命令模式通过将请求封装为命令对象,因此可以让系统参数化处理请求,包含排队、日志、撤回功能。它又被称为 Action 或 Transaction。与过程化的请求调用不同,命令对象在程序中会有更长的生命周期,我们可以在程序运行的任意时刻访问命令对象,且命令对象可以被四处传递。 命令对象将请求的发送者和请求的接收者与请求本身解耦,因此其设计与实现的焦点在于命令对象。假想有一个包含一堆

模板方法模式

概述TemplateMethod 模板方法模式即由父类定义算法逻辑骨架,由子类提供具体逻辑步骤的实现。 《设计模式:可复用面向软件的基础》讨论了以下案例:应用框架 Application 类负责打开一个外部存储的文档,应用就会将文档表示为 Document 对象。基于 Application、Document 框架,实现具体逻辑的子类如绘图应用中的 DrawApplication、DrawDocu

组合模式

Composite 组合模式将对象组合成树形结构,以表示“部分-整体”的层次结构。因为使用了树形结构,组合模式使单个对象和组合对象有使用一致性。比如在图形编辑器或图形捕捉系统中,可以采用宜搭似的设计方案,Input、Textarea、Text、Line 等作为普通图元,Row 等作为这些图元的容器 Container,在容器和图元两层中,容器层具有添加图元的接口,图元没有,这样两者没有使用一致性,