最近整理以前的纸质学习笔记,将GOF的23种设计模式学习过程中的笔记以电子表格形式汇总。笔记已根据个人习惯精简。
当年学习设计模式的时候,将其中的factory Method、builder、bridge、Facade、command、iterator、strategy等模式套用到数据库对比的工具开发中,程序执行时间是原有类似功能的程序执行时间的三分之一,实践表明设计模式的合理应用能提高代码质量和效率。
创建型模式
名称 | 描述 | 备注 |
工厂(factory) | 客户类和工厂类分开 | switch |
建造(builder) | 将产品的内部表象和产品的生成过程分割开 | 复杂对象独立于组成 |
工厂方法(factory Method) | 抽象工厂角色、子类 | 逻辑判断,类的创建型模式 |
原始模型(prototype) | 原型对象复制,适任何等级结构,每个类必须匹配一个克隆方法 |
|
单例(singleton) | 确保某一个类只有一个实例 |
|
结构型模式
名称 | 描述 | 备注 |
适配器(adapter) | 接口转换使匹配2个类 |
|
桥梁(bridge) | 将抽象化与实现化脱耦,使2者可独立变化 | 多角度分类,统一使用所有对象 |
合成(composite) | 将对象组织到树结构中,描述整体与部分的关系 | 层次 |
装饰(decorator) | 以对客户端透明的方式扩展对象的功能,继承 |
|
门面(Facade) | 子系统通过统一的门面与外部通信 提供一个高层次的接口,使得子系统更易于使用 | 1、三层架构;2、多子类; 3、遗留大型系统 |
享元(flyweight) | 共享,内蕴,工厂对象创建被共享的对象 |
|
代理(proxy) | 中介 | 远程、虚拟、安全 |
行为模式
名称 | 描述 | 备注 |
责任链(chain of responsiblity) | 请求在链上传递直到某一对象决定处理此请求 |
|
命令(command) | 发出命令的责任和执行命令的责任分割开,委派给不同对象 | 撤销/恢复操作 |
解释器(interpreter) | 需定义一系列的组合规则 |
|
迭代子模式(iterator) | 顺序访问聚集中的元素 | 多种遍历方式,数据库操作 |
调停者(mediator) | 包装一系列对象相互作用的方式,松散耦合 | 集中控制 |
备忘录(memento) | 存储另外一个对象内部状态的快照的对象 | 状态复原 |
观察者(observer) | 1:n 让多个观察者对象同时监听某一主题对象 |
|
状态(state) | 允许一个对象在其内部状态改变的时候改变行为 子类 |
|
策略(strategy) | 算法,行为和环境分开 | 互相替换 |
模板方法(template Method) | 顶级逻辑框架,子类实现细节 | 算法骨架,步骤延迟到子类 |
访问者(visitor) | 数据结构元素 |
|