GOF的23种设计模式详解

需积分: 9 1 下载量 117 浏览量 更新于2024-09-15 收藏 51KB DOC 举报
"这篇文章以轻松幽默的方式介绍了GOF的23种设计模式,将它们与追求心仪对象(MM)的情境相结合,使复杂的概念变得生动易懂。文章分为创建型、结构型和行为型三大类别,每种模式都通过贴近生活的例子进行了阐释。" 创建型模式主要用于对象的创建,确保在程序运行时可以动态地创建对象,同时保持代码的灵活性和扩展性。 1. 工厂模式(Factory):模拟了麦当劳和肯德基订购鸡翅的过程,客户只需要告诉工厂自己想要什么,而无需关心产品是如何制造的。这种模式简化了客户端的代码,但当产品变化时,工厂也需要相应更新。 2. 建造者模式(Builder):比如用翻译机构建不同语言的“我爱你”表达,将产品的构建过程和表示分离,使得产品可以根据不同需求有多种构建方式。建造者模式允许客户端对产品内部细节保持无知,且能灵活控制构建过程。 3. 工厂方法模式(Factory Method):类似于在麦当劳点汉堡,让MM直接告诉服务员她的口味,核心工厂不直接创建产品,而是由子类决定具体创建哪个类型的产品,实现了抽象化与实现的解耦。 结构型模式关注对象的组合和连接,以达到更好的复用和结构优化。 4. 适配器模式(Adapter):将两个不兼容的接口通过适配器进行转换,使得原本无法一起工作的类可以协同工作,就像不同插头的转换器。 5. 桥接模式(Bridge):允许抽象部分和实现部分独立变化,如同手机和手机壳可以独立更换,互不影响。 6. 组合模式(Composite):将对象组合成树形结构,表示“部分-整体”的层次结构,如组织架构中的部门与员工关系。 7. 装饰器模式(Decorator):动态地给对象添加新的功能,例如在咖啡上加糖或奶,不改变原有对象的基础上增加新特性。 8. 外观模式(Façade):提供一个统一的接口,用来访问子系统中的一组接口,简化子系统的使用。 9. 飞重模式(Flyweight):用于减少内存中对象的数量,提高性能,比如文本编辑器中的字符共享。 10. 代理模式(Proxy):为其他对象提供一种代理以控制对这个对象的访问,例如在线购票系统中的票务代理。 行为型模式关注对象之间的交互和职责分配。 11. 责任链模式(Chain of Responsibility):处理请求的对象形成一条链,请求沿着链传递,直到被某个对象处理。 12. 命令模式(Command):将请求封装为一个对象,以便使用不同的请求、队列请求、或者支持可撤销的操作。 13. 解释器模式(Interpreter):为特定语言提供解释器,如表达式求值。 14. 迭代器模式(Iterator):提供一种方法顺序访问聚合对象的元素,而又不暴露其底层表示。 15. 中介者模式(Mediator):定义一个中介对象协调多个对象之间的交互,降低耦合度。 16. 备忘录模式(Memento):保存对象的状态以便在需要时恢复,如游戏存档。 17. 观察者模式(Observer):定义对象间的一对多依赖关系,当一个对象状态改变时,所有依赖它的对象都会得到通知并自动更新。 18. 状态模式(State):允许对象在其内部状态改变时改变其行为,对象看起来似乎改变了类。 19. 策略模式(Strategy):定义一系列算法,并将每一个算法封装起来,使它们可以互相替换,策略对象可独立变化。 20. 模板方法模式(Template Method):定义一个操作中的算法骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 21. 访问者模式(Visitor):表示一个作用于某对象结构中的各元素的操作,它可以在不改变元素类的前提下定义作用于这些元素的新操作。 这23种设计模式是软件开发中重要的设计思想,它们有助于我们编写出更灵活、可维护和可扩展的代码。理解并熟练运用这些模式,可以提高代码质量,使代码更加符合面向对象的原则。