
GoF 23种经典设计模式
想象一下,你是一名代码世界的冒险者,面对层层关卡和错综复杂的难题。幸运的是,你拥有一本神秘的魔法书——GoF(Gang of Four)设计模式,这本书记录了23种强大的法术,每一种都能帮助你快速解决问题,化解难题,让你的编程旅程更加顺利。
这些设计模式就像是你的魔法装备,它们被分为三大类:创建型、结构型和行为型。每一类模式都有独特的力量,能够帮助你在不同的场景中大显身手。那么,准备好开启这场编程冒险了吗?让我们一起探索这23种设计模式,解锁更多编程秘籍吧!
创建型模式(Creational Patterns) - 5种
这些模式专注于如何创造对象,就像是你魔法书中的召唤法术,让你能够以不同的方式、不同的方式控制对象的诞生。
你是唯一的!只召唤出一个实例,任何地方都能随时访问它。
不确定想要什么?让工厂来决定!你只需要指定类型,工厂就会为你造出合适的对象。
想要多个相关对象?不用担心,抽象工厂一次性为你提供所有需要的对象,让它们亲密合作。
不想一次性得到完整的复杂对象?一步一步地创造出你需要的每个部分,最后组合成完整的大作。
想要复制一个对象?直接复制现有对象,而不是重新制造,让你省时省力。
结构型模式(Structural Patterns) - 7种
结构型模式让你像搭积木一样,将各种类和对象组合成一个强大、灵活的系统。用它们可以建立复杂的“结构”,让你的代码既简洁又高效。
哎呀,这两个类接口不匹配!没关系,适配器来了,它会帮你转换接口,让他们可以和平共处。
不想让抽象和实现耦合在一起?桥接模式帮你分离它们,这样你就可以随意修改和扩展。
一个对象不够强大?没问题,组合模式帮你把多个对象组合成树形结构,统一管理,强大到无法想象。
想给你的对象增添新功能?不用修改原对象,装饰者帮你轻松“加装”功能,提升你的对象能力。
子系统太复杂了?别担心,外观模式为你提供一个简单的接口,简化外部访问,让你操作起来得心应手。
拥有大量相似对象?享元模式让你通过共享相同的对象来节省内存,不再浪费资源。
想控制对对象的访问?代理模式为你提供一层代理,帮助你管理和控制对原对象的操作。
行为型模式(Behavioral Patterns) - 11种
这些模式专注于对象之间的交互,就像是你编程世界中的“社交技能”,让你的对象能够更加智能地协作和沟通。
责任链模式 (Chain of Responsibility)
当多个对象接收到请求时,责任链模式让它们依次传递处理,不会发生冲突,也不会让某个对象被过度依赖。
想要一个对象执行某个任务?将任务封装成命令,传递给接收者,这样任务就能灵活排队、撤销,甚至日志记录。
对编程语言感兴趣?解释器模式帮你定义语言的语法,并为你提供解析执行的方式,轻松理解语言规则。
想要遍历集合对象中的元素?迭代器模式为你提供了一个“旅行指南”,让你不暴露集合的内部结构,顺利地访问所有元素。
你和其他对象的关系复杂?让中介者来处理!它封装了所有对象间的交互,减少了直接的沟通,让它们变得更加高效。
需要记住某个对象的状态并能随时恢复?备忘录模式帮助你捕获和恢复对象状态,而不需要暴露它的内部细节。
一个对象状态变化,其他依赖它的对象都要做出反应?观察者模式为你提供了完美的解决方案,当一个对象变化时,所有依赖它的对象都会收到通知并自动更新。
你的对象总是表现得像不一样?状态模式帮你根据对象的内部状态变化,改变它的行为,仿佛它有了不同的个性。
想要在不同场景下灵活切换算法?策略模式帮你将不同算法封装成独立的策略类,让它们可以轻松互换。
不想从头开始实现每个步骤?模板方法模式帮你定义算法骨架,而把具体细节交给子类去实现。
想对一组对象执行不同操作?访问者模式为你提供了一种方法,在不改变对象类的前提下执行各种操作。
记忆口诀
这些模式虽多,但你可以通过以下口诀来快速记忆它们,提升你的魔法技能!
创建型设计模式:
单例模式:独一无二,最重要。
工厂方法模式:制造者,无需说。
抽象工厂模式:一族产品,同根源。
建造者模式:一步一步,建造家。
原型模式:克隆专家,快捷法。
结构型设计模式:
适配器模式:转换者,聪明智。
桥接模式:结构优化,灵活性。
组合模式:树形结构,组合家。
装饰模式:装饰者,美化家。
外观模式:微缩封装,简洁家。
享元模式:享元工厂,节省家。
代理模式:替身幕后,保护家。
行为型设计模式:
职责链模式:可扩展,级别性。
命令模式:命令者,有权家。
解释器模式:解释语言,特殊家。
迭代器模式:循环选择,简化家。
中介者模式:中介者,沟通家。
备忘录模式:状态备份,还原家。
观察者模式:被观察,自主家。
状态模式:状态管理,干净家。
策略模式:行为封装,灵活家。
模板方法:算法继承,不变家。
访问者模式:动态添加,扩展家。
总结
这些设计模式就像你编程冒险中的神奇道具,帮助你应对复杂的挑战。掌握了这些模式,你不仅能写出更加高效、可维护的代码,还能灵活应对各种编程难题,成为编程世界中的超级英雄!
每种设计模式都有其独特的魔力,帮助你解决不同场景下的问题。快拿起这本魔法书,开始你的编程冒险之旅吧!