MSIPO技术圈 首页 IT技术 查看内容

设计模式类型(创建型, 结构性, 行为性)和适用场景

2024-03-27

创建型设计模式(Creational Patterns):

  1. 单例模式(Singleton Pattern):确保一个类只有一个实例,并提供一个全局访问点。
  2. 工厂模式(Factory Pattern):定义一个用于创建对象的接口,但将实例化的过程推迟到子类。
  3. 抽象工厂模式(Abstract Factory Pattern):提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们的具体类。
  4. 建造者模式(Builder Pattern):将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。
  5. 原型模式(Prototype Pattern):通过复制现有对象来创建新对象。
  6. 生成器模式: 将一个复杂对象的构建与其表示分离, 使得同样的构建过程可以创建不同的表示; 或图中有builder关键字

结构型设计模式(Structural Patterns):

  1. 适配器模式(Adapter Pattern):将一个类的接口转换成客户希望的另外一个接口。
  2. 装饰者模式(Decorator Pattern):动态地将责任附加到对象上,以便在不改变接口的情况下,从对象的外部扩展其功能。
  3. 代理模式(Proxy Pattern):为其他对象提供一个代理以控制对这个对象的访问。
  4. 外观模式(Facade Pattern):为复杂的子系统提供一个简单的接口。
  5. 桥接模式(Bridge Pattern):将抽象部分与它的实现部分分离,以便它们可以独立地变化。

行为型设计模式(Behavioral Patterns):

  1. 观察者模式(Observer Pattern):定义对象间的一种一对多的依赖关系,使得当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新。
  2. 策略模式(Strategy Pattern):定义一系列的算法,将每个算法封装起来,并使它们可以相互替换。
  3. 命令模式(Command Pattern):将一个请求封装成一个对象,从而使你可用不同的请求对客户进行参数化。
  4. 迭代器模式(Iterator Pattern):提供一种方法顺序访问一个聚合对象中的各个元素,而又不需暴露该对象的内部表示。
  5. 状态模式(State Pattern):允许一个对象在其内部状态改变时改变它的行为。
  6. 责任链模式 : 便多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并恐着这条链传递该请求,直到有一个对象处理它为止。
  7. 访问者模式(Visitor Pattern): 一个对象结构包含很多类对象,而系统要求这些对象实施一些依赖于某具体类的操作时,可以使用访问者模式。
  8. 中介者模式(Mediator Pattern): 用一个中介对象来封装一系列的对象交互,中介者便各对象不需要显式地相互引用,从而便其耦合松散,而且可以独立地改变它们之间前交互。

其他设计模式:

模板方法模式(Template Method Pattern)
备忘录模式(Memento Pattern)
解释器模式(Interpreter Pattern)

适用场景

命令模式适用场景:
  1. 抽象出待执行的动作以参数化某对象﹐此模式是过程语言中的回调机制的一个面向对象的替代方式;
  2. 在不同的时刻指定﹑排列和执行请求﹔
  3. 支持取消操作﹔
  4. 支持修改日志,这祥当系流崩溃时,这些修改可以被重做一遍﹔
  5. 用构建在原语操作上的高层操作构造一个系统。
观察者模式适用场景:
  1. 当一个抽象模型有两个方面,其中一个方面依赖于另一个方面,将这两者封装在独立地对象中以便它们可以各自独立地改变和复用﹔
  2. 当对一个对象的改变需要同时改变其他对象,而不知道具体有多少对象有待改变时﹔
  3. 当一个对象必须通知其他对象,它又不能假定其他对象是谁,即︰不希望这些对象是紧耦合的。
策略模式适用场景:
  1. 许多相关的类仅仅是行为有异。
  2. 需要使用一个算法的不同变体。
  3. 算法使用客户不该知道的数据。可使用策略模式以避免暴露复杂的、与算法相关的数据结构﹔
  4. 一个类定义了多种行为,并且这些行为在这个类的操作中以多个条件语句的形式出现,将相关的条件分支移入它们各目的Strategy(策略)类中﹐以代替这些条件语句。
状态模式适用场景:
解释器模式适用场景:
生成器模式适用场景(复杂对象构造):
  1. 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。
  2. 当构造过程必须允许被构造的对象有不同的表示时。
原型模式适用场景:
  1. 原型方法适用于用户需求不清、需求经常变化的情况,可以帮助导出系流需求并验证需求的有效性﹔
  2. 探索型原型的目的是弄清目标的要求﹐确定所希望的特性,并探讨多种方案的可行性,可以用来探索特殊的软件解决方察﹔
  3. 原型法能够迅速地开发出一个让用户看得见的系统框架,可以用来支持用户界面设计。
抽象工厂模式适用场景:
工厂方法模式适用场景:
访问者模式适用场景:
  1. 需要对一个对象结构中的对象进行很多不同的并且不相关的操作
中介者模式适用场景:
  1. 一组对象以定义良好但是复杂的方式进行通信,产生的相互依赖关系结构混乱且难以理解。
  2. 一个对象引用其他很多对象并且直接与这些对象通信,导致难以复用该对象。
  3. 想定制一个分布在多个类中的行为,而又不想生成太多的子类。
责任链适用场景:
  1. 有多个的对象可以处理一个请求,那个对象处理该请求运行时刻自动确定。
  2. 想在不明确指定接收者的情汛下同多个对象中的一个提交一个请求。
  3. 可处理一个请求的对象集合应被动态指定。
适配器设计模式适用场景:
桥接模式适用场景:

后续会继续补充

相关阅读

热门文章

    手机版|MSIPO技术圈 皖ICP备19022944号-2

    Copyright © 2024, msipo.com

    返回顶部