深入解析!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)
- 意图:表示一个作用于某对象结构的操作,可在不更改对象类的情况下定义新操作。
- 使用场景:需要对一系列不同类型的对象执行操作,但又不想修改对象的类结构。
这些设计模式提供了应对不同软件设计问题的可复用解决方案,合理应用这些模式有助于提高系统的扩展性、可维护性和灵活性。
热门推荐
中老年便秘怎么调理
曹州牡丹园:AAAA级景区,牡丹花海与古建筑的完美融合
湄洲岛旅游攻略:景点介绍、交通指南与实用信息
十大维生素B12蔬菜含量排行榜:紫菜含量最高(菠菜上榜)
三角梅是乔木还是灌木(区分三角梅的生长形态及特征)
刚刚,华为、中移动,大动作!
炎炎夏日,老年人如何预防心脑血管疾病?
74年的虎2024年运势和财运怎么样 74年属虎50岁有一劫
HIFI耳机阻抗大好还是小好?灵敏度多少才算优秀?
物业小区各类纠纷及解决办法
民法典中物业管理合同要约定什么
曹魏第一大将:张辽的辉煌与遗产
雅思0基础到6.5分需要多久?6个月!
一装一个不明白的中古风,其实没那么难
北伦敦德比:沉浮之间恩怨交织 枪手热刺的爱恨情仇
房产证在结婚后所办是共同财产吗
医疗保险怎么赔付
命门火衰怎么办?医生详解中医调理方案
大选在即,德国政治为何发生巨变?
2味药朴实无华,气虚、血虚、阳虚、精虚通调,药效不低调
蛋白质变性的本质是什么?可逆吗?
如何有效解决掉盘问题,提升网络稳定性与游戏体验
如何准确计算涨停价格?这种计算方法存在哪些挑战?
培养孩子社交能力6个技巧
免疫球蛋白的副作用和危害
静脉注射用人免疫球蛋白适用哪些人群
不动产权籍调查收费标准明确,费用如何收取?
刀郎上海站首轮开票即售罄!申城大型演唱会密集上新
《诗经》:中国文学之源 中华文化之歌
阎锡山为何能统治山西38年?这四点原因堪称军阀典范