深入解析!23种设计模式的核心精髓与应用场景
创作时间:
作者:
@小白创作中心
深入解析!23种设计模式的核心精髓与应用场景
引用
CSDN
1.
https://blog.csdn.net/weixin_46453743/article/details/145781634
以下是GoF提出的23种设计模式的简单介绍,这些模式按功能分类,分别属于创建型模式、结构型模式和行为型模式:
创建型模式 (Creational Patterns)
- 工厂方法模式 (Factory Method)
- 意图:定义一个创建对象的接口,让子类决定实例化哪一个类。
- 使用场景:当无法提前知道具体对象的类型时使用。
- 抽象工厂模式 (Abstract Factory)
- 意图:提供一个接口,用于创建一系列相关或相互依赖的对象,而不指定具体类。
- 使用场景:创建相关对象的系统,需要支持多个产品系列。
- 建造者模式 (Builder)
- 意图:将一个复杂对象的构建与表示分离,使同样的构建过程可以创建不同的表示。
- 使用场景:构造具有多个部件的复杂对象,且对象的创建过程稳定。
- 原型模式 (Prototype)
- 意图:通过复制现有的实例来创建新的对象。
- 使用场景:需要创建相似对象时,减少重复创建开销。
- 单例模式 (Singleton)
- 意图:确保一个类只有一个实例,并提供全局访问点。
- 使用场景:全局唯一实例的需求,如配置管理类、资源管理类等。
结构型模式 (Structural Patterns)
- 适配器模式 (Adapter)
- 意图:将一个类的接口转换成客户端期望的另一种接口,使不兼容的类能协同工作。
- 使用场景:连接接口不兼容的类或对象。
- 桥接模式 (Bridge)
- 意图:将抽象部分与实现部分分离,使它们可以独立变化。
- 使用场景:对象需要多个维度的变化,同时保持独立变化的可能性。
- 组合模式 (Composite)
- 意图:将对象组合成树形结构,使得客户端可以一致地处理单个对象和组合对象。
- 使用场景:表示“部分-整体”结构的场景,如文件系统的文件夹结构。
- 装饰器模式 (Decorator)
- 意图:动态地给对象添加额外职责。
- 使用场景:不想通过继承来扩展功能,或需要动态增加功能时。
- 外观模式 (Facade)
- 意图:为子系统中的一组接口提供一个一致的界面,使子系统更易用。
- 使用场景:简化复杂系统的接口,提供统一的操作入口。
- 享元模式 (Flyweight)
- 意图:通过共享技术实现大量细粒度对象的高效支持。
- 使用场景:创建大量相似对象时,节省内存。
- 代理模式 (Proxy)
- 意图:为某个对象提供一个代理,以控制对该对象的访问。
- 使用场景:远程代理、虚拟代理和保护代理等。
行为型模式 (Behavioral Patterns)
- 责任链模式 (Chain of Responsibility)
- 意图:使多个对象有机会处理请求,从而避免请求的发送者和接收者之间的耦合。
- 使用场景:多个对象可以处理请求时,让请求在对象间传递。
- 命令模式 (Command)
- 意图:将请求封装成对象,以便使用不同的请求、队列或日志来参数化对象。
- 使用场景:需要支持撤销、排队或日志记录等功能。
- 解释器模式 (Interpreter)
- 意图:为语言创建解释器,用于解释该语言的语法和语句。
- 使用场景:设计一个特定领域语言的解释器或执行器。
- 迭代器模式 (Iterator)
- 意图:提供一种方法顺序访问一个集合对象的元素,而不暴露其内部表示。
- 使用场景:遍历集合的不同实现,提供统一的访问接口。
- 中介者模式 (Mediator)
- 意图:用一个中介对象封装一系列对象之间的交互,使对象不必显式引用彼此,降低耦合。
- 使用场景:系统中对象之间存在复杂交互时,使用中介者来简化关系。
- 备忘录模式 (Memento)
- 意图:在不破坏封装的前提下,捕获和恢复对象的内部状态。
- 使用场景:需要保存对象的历史状态,且以后可能恢复。
- 观察者模式 (Observer)
- 意图:定义对象间的一种一对多的依赖关系,状态改变时自动通知所有依赖的对象。
- 使用场景:事件驱动的系统、发布-订阅模型。
- 状态模式 (State)
- 意图:允许对象在其内部状态发生改变时,改变它的行为。
- 使用场景:对象的行为依赖于状态,并且需要在运行时改变状态。
- 策略模式 (Strategy)
- 意图:定义一系列算法,将每个算法封装起来,并使它们可以互相替换。
- 使用场景:需要在运行时切换算法。
- 模板方法模式 (Template Method)
- 意图:定义算法的框架,将某些步骤延迟到子类。
- 使用场景:不同实现间存在共同步骤,但个别步骤不同时。
- 访问者模式 (Visitor)
- 意图:表示一个作用于某对象结构的操作,可在不更改对象类的情况下定义新操作。
- 使用场景:需要对一系列不同类型的对象执行操作,但又不想修改对象的类结构。
这些设计模式提供了应对不同软件设计问题的可复用解决方案,合理应用这些模式有助于提高系统的扩展性、可维护性和灵活性。
热门推荐
骨折后多久能开车?医生的专业解答来了
肠癌手术后多久可以恢复开车?专家给出详细解答
CS:GO最贵的十大武器皮肤盘点:从2万到100万美元
2024航展:中国船舶集团展出多型无人艇装备
轻松设置双屏显示器,享受更高效的工作体验
如何在谷歌云盘中设置文件权限
智能家居新趋势:智能马桶的普及与应用
如何有效管理时间:提升效率的5个关键方法
赏读| 黄宝庆:探寻宋代遗风,建盏艺术的千年传承与现代复兴
如何安装立式空调?安装时需要考虑哪些因素?
幼儿园如何开展教研例会
仲裁协议无效的几种情形及经济纠纷解决途径
2025年公务员资料分析备考技巧:当资料分析和容斥原理面对面
800G光模块为何是AI浪潮的一大节点?
我的世界指令大全可复制最新2025年
堇菜科:独特形态与广泛用途的植物家族
上坡起步如何准确把握刹车和油门的配合
印度展示两种高超音速弹道导弹,但个顶个的外形奇葩
别只会扎堆去三亚,这座常被当成中转站的老城才是真正的美食之都
开了半辈子车,才知道黑车和白车差距这么大,过来人告诉你:别再买错了!
买车选颜色时,确实存在一些需要注意的“坑”:
海盐、湖盐、低钠盐,到底买哪种?只要做好这三点就够了
留学申请表填写指南:步骤与注意事项
诚信建设|啥?我成了失信被执行人?
青岛二手房交易税费详解:契税、营业税、个税全解析
中考词汇选哪种好 中考单词书推荐
普洱茶入门指南:从选购到冲泡的全方位解答
南京工业大学是双一流吗?排名怎么样?综合实力出众,有望冲击!
传承300多年!感受螳螂拳一招一式间的力量与美学
如何打造百年老校校史展馆?校史展览馆设计的关键要素揭秘