23种设计模式
初识设计模式
1. 迭代器模式(Iterator Pattern) 一个一个遍历

优点
不管实现如何变化,都可以使用Iterator
如果Aggregate的实现由数组变更为ArrayList,使用Iterator的逻辑不用改变。应用和实现解耦,可以换实现方式
2. 适配器模式(Adapter Pattern) 加个“适配器”以便于复用
类适配器模式(使用继承的适配器)
对象适配器模式(使用委托的适配器)

优点
在不改变现有代码的前提下,使现有代码适配于新的接口
让现有的类适配新接口时候,可以使用Adapter模式
交给子类
3. 模板方法模式(Template Method Pattern) 将具体处理交给子类
在父类中定义处理流程的框架,在子类中实现具体处理

优点
可以使逻辑处理通用化
父类与子类之间的协作
里氏替换原则(The Liskov Substitution Principle,LSP)
无论在父类类型的变量中保存那个子类的实例,程序都可以正常工作
4. 工厂方法模式(Factory Method Pattern) 将实例的生成交给子类

生成实例
5. 单例模式(Singleton Pattern) 只有一个实例

6. 原型模式(Prototype Pattern) 通过复制生成实例

Cloneable接口没有声明clone方法,它只是用来标记”可以使用clone方法进行复制“,这样的接口被称为标记接口(marker interface)
clone方法进行的复制时浅复制(shallow copy),只是将被复制实例的字段值直接复制到新的实例中。
7. 建造者模式(Builder Pattern) 组装复杂的实例


8. 抽象工厂模式(Abstract Factory Pattern) 将关联零件组装成产品

生成实例的方法
- new
- clone() 不会调用构造函数
- newInstance() 会调用无参构造函数
分开考虑
9. 桥接模式(Bridge Pattern) 将类的功能层次结构与实现层次结构分离
将类的功能层次结构与实现层次结构分离

继承是强关联关系,委托是若关联关系
10. 策略模式(Strategy Pattern) 整体地替换算法

一致性
11. 组合模式(Composite Pattern) 容器与内容的一致性
能够使容器和内容具有一致性,创造出递归结构

12. 装饰模式(Decorator Pattern) 装饰边框与被装饰物的一致性

装饰模式的一个缺点是会导致程序中增加许多功能类似的很小的的类。
访问数据结构
13. 访问者模式(Visitor Pattern) 访问数据结构并处理数据

14. 责任链模式(Chain of Responsibility Pattern) 推卸责任

简单化
15. 外观模式(Facade Pattern) 简单窗口

16. 中介者模式(Mediator Pattern) 只有一个仲裁者

管理状态
17. 观察者模式(Observer Pattern) 发送状态变化通知

18. 备忘录模式(Memento Pattern) 保存对象状态


19. 状态模式(State Pattern) 用类表示状态

避免浪费
20. 享元模式(Flyweight Pattern) 共享对象,避免浪费
通过尽量共享实例来避免new出实例

21. 代理模式(Proxy Pattern) 只在必要时生成实例

用类来表现
22. 命令模式(Command Pattern) 命令也是类

23. 解释器模式(Interpreter Pattern) 语法规则也是类

GoF对设计模式的分类

文章介绍了23种常见的设计模式,包括迭代器模式用于遍历,适配器模式实现接口兼容,模板方法模式定义处理流程,工厂方法模式创建对象,以及单例模式、原型模式等。这些模式有助于代码的可维护性和扩展性。
1266






