23种设计模式的简要总结

设计模式是一种通用的解决方案,用于解决软件设计中常见的问题。这些设计模式可以帮助开发人员在设计和开发过程中遵循一些最佳实践,提高代码的可重用性、可维护性和灵活性。下面是23种常见的设计模式的概述:

创建型模式(Creational Patterns):

创建型模式(Creational Design Patterns)是软件设计模式中的一种类别,主要关注对象的创建方式,以便更灵活、更可维护地创建对象。这些模式提供了一种将对象实例化的机制,而不是直接使用 new 关键字来创建对象。创建型模式的目标是将对象的创建和类的使用相分离,从而降低系统的耦合度。

  1. 简单工厂模式(Simple Factory Pattern):通过一个工厂类来创建不同类型的对象,隐藏了对象的创建逻辑。
  2. 工厂方法模式(Factory Method Pattern):定义一个创建对象的接口,但具体的对象创建由子类决定,将对象的创建延迟到子类中。
  3. 抽象工厂模式(Abstract Factory Pattern):提供一个接口,用于创建相关或依赖对象的家族,而不需要指定具体类。
  4. 单例模式(Singleton Pattern):确保一个类只有一个实例,并提供全局访问点来获取该实例。
  5. 原型模式(Prototype Pattern):通过复制现有对象来创建新对象,避免了使用常规的实例化方式。
  6. 建造者模式(Builder Pattern):将一个复杂对象的构建过程与其表示分离,以便可以使用相同的构建过程创建不同的表示。

结构型模式(Structural Patterns):

结构型模式(Structural Design Patterns)是一类设计模式,它关注如何将类或对象组合成更大的结构,以满足更广泛的设计需求。这些模式主要用于处理类和对象之间的关联关系,以实现更灵活、可复用和可扩展的系统设计。结构型模式不仅可以改善系统的组织结构,还可以降低系统中各部分之间的耦合度。

  1. 适配器模式(Adapter Pattern):将一个类的接口转换成客户端所期望的另一个接口。
  2. 桥接模式(Bridge Pattern):将抽象部分与它的实现部分分离,使它们可以独立地变化。
  3. 组合模式(Composite Pattern):将对象组合成树形结构,以表示"部分-整体"的层次结构。
  4. 装饰器模式(Decorator Pattern):动态地给对象添加额外的职责,同时又不改变其结构。
  5. 外观模式(Facade Pattern):为复杂系统提供一个简化的接口。
  6. 享元模式(Flyweight Pattern):通过共享尽可能多的对象来减少内存使用和对象创建的开销。
  7. 代理模式(Proxy Pattern):为其他对象提供一种代理以控制对这个对象的访问。

行为型模式(Behavioral Patterns):

行为型模式(Behavioral Design Patterns)是一类设计模式,它关注对象之间的协作和职责分配,以实现更灵活和可维护的系统行为。这些模式主要关注对象之间的通信、责任分担和算法的交互。行为型模式有助于定义对象之间的关系,以满足特定的通信和交互需求,同时降低系统的耦合度。

  1. 责任链模式(Chain of Responsibility Pattern):将请求的发送者和接收者解耦,通过一条链传递请求,直到有对象处理它。
  2. 命令模式(Command Pattern):将请求封装为一个对象,从而可以使用不同的请求参数化其他对象,并支持请求的排队和日志记录。
  3. 解释器模式(Interpreter Pattern):定义一个语言的文法,并解析相应语法的表达式。
  4. 迭代器模式(Iterator Pattern):提供一种顺序访问聚合对象中各个元素的方法,而不暴露其内部实现。
  5. 中介者模式(Mediator Pattern):通过一个中介对象来封装一系列对象之间的交互,使其耦合松散,易于维护。
  6. 备忘录模式(Memento Pattern):在不破坏封装性的前提下,捕获对象的内部状态,并在对象之外保存这个状态,以后可以恢复到原先保存的状态。
  7. 观察者模式(Observer Pattern):定义对象之间的一种一对多依赖关系,使得每当一个对象改变状态时,其依赖对象都会得到通知并自动更新。
  8. 状态模式(State Pattern):允许对象在内部状态改变时改变它的行为,对象看起来似乎修改了它的类。
  9. 策略模式(Strategy Pattern):定义一系列算法,将每个算法封装起来,并使它们可以互换。
  10. 模板方法模式(Template Method Pattern):定义一个算法的骨架,将一些步骤的实现延迟到子类中,以便子类可以重新定义算法的某些特定步骤。

这些设计模式提供了一些通用的解决方案,可以在软件开发中使用,以提高代码的可维护性、可扩展性和可重用性。它们可以根据不同的情况和需求来选择和应用,以帮助解决特定的设计问题。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值