设计模式是一把双刃剑,正确使用可以提高系统的适应性,误用会反过来降低系统的适应性
内容大纲
预备知识
第一部分:适应设计模式
- “Iterator模式——一个一个遍历”:从含有多个集合中将各个元素逐一取出
- “Adapter模式——加个适配器以便复用”:可用来连接具有不同接口的类
第二部分:交给子类
-
“Template Method模式——将具体处理交给子类”: 在父类中定义处理框架,在子类中进行具体处理
-
“Factory Method模式——将实例的生成交给子类”: 在父类中定义生成接口的处理框架,在子类中进行具体处
第三部分:生成实例
-
“Singleton模式——只有一个实例”: 只允许生成一个实例
-
“Prototype模式——通过复制生成实例”: 复制原型接口并生成实例
-
“Builder模式——组装复杂的实例”: 通过各阶段的处理以组装出复杂实例
-
“Abstract Factory模式——将关联零件组装成产品”: 像在工厂中将各个零件组装成产品
第四部分: 分开考虑
-
“Bridge模式——将类的功能层次结构与实现层次结构分离”: 按照功能层次结构与实现层次结构把一个两种扩展(继承)混在一起的程序进行分离,并在它们之间搭建桥梁
-
“Strategy模式——整体的替换算法”: 可以帮助我们整体的替换算法和改善算法
第五部分: 一致性
-
“Composite模式——容器与内容的一致性”: 让容器和内容具有一致性从而构建递归结构
-
“Decorator模式——装饰边框与被装饰物的一致性”: 让装饰边框与被装饰物具有一致性,并可以任意叠加装饰边框
第六部分: 访问数据结构
-
“Visitor模式——访问数据结构并处理数据”: 学习在访问数据结构的同时重复套用相同操作
-
“Chain of Responsibility模式——推卸责任”: 可以处理连接在一起的多个对象中某个地方
第七部分: 简单化
-
“Facade模式——简单窗口”: 该模式并不是单独的控制那些错综复杂的关联在一起的多个类,而是通过配置一个窗口类来改善系统整体的可操作性
-
“Mediator模式——只有一个仲裁者”: 可以不与多个复杂的类打交道,而是准备一个窗口,然后通过与这个窗口打交道来简化程序
第八部分: 管理状态
-
“Observer模式——发送状态变化通知”: 将状态发生变化的类和发送状态便通知的类分开实现
-
“Memento模式——保存对象状态”: 保存对象现在的状态,并可以根据情况撤销操作,将对象恢复到以前状态
-
“State模式——用类表示状态”: 用类表现状态,以减少switch语句
第九部分: 避免浪费
-
“Flyweight模式——共享对象,避免浪费”: 当多个地方有重复对象时,通过共享对象来避免浪费
-
“Proxy模式——只在必要时生成实例”: 除非必须“本人”处理,否则就只使用代理类来负责处理
第十部分: 用类来表现
-
“Command模式——命令也是类”: 用类来表示请求和命令
-
“Interpreter模式——语法规则也是类”: 用类来表示语法规则
预备知识
继承:实线、子类指向父类
接口与实现:虚线
聚合:在一个类中持有另一个类的实例