常用设计模式的功能、关联和区别

简介: 常用设计模式的功能、关联和区别

一、设计模式的功能



  1. Bridge桥接模式:在“类的功能层次结构”和“类的实现层次结构”之间搭建桥梁

详见:设计模式学习(一):Bridge桥接模式

  1. Observer观察者模式:将状态变化的通知发送给观察对象

详见:设计模式学习(二):Observer观察者模式

  1. Adapter适配器模式:填补“现有的程序”和“所需的程序”之间差异

详见:设计模式学习(三):Adapter适配器模式

  1. Strategy策略模式:可以整体地替换算法的实现部分

详见:设计模式学习(四):Strategy策略模式

  1. State状态模式:用类来表示状态

详见:设计模式学习(五):State状态模式

  1. Template Method模板方法模式:在父类中定义处理流程的框架,在子类中实现具体处理。将具体的处理交给子类

详见:设计模式学习(六):Template Method模板方法模式

  1. Factory Method工厂模式:将Template Method模式用于生成实例。将实例的生成交给子类

详见:设计模式学习(七):Factory Method工厂模式

  1. Proxy代理模式:如果“本人”对象无法自己亲自完成一些工作,就将其交给“代理人”对象负责

详见:设计模式学习(八):Proxy代理模式

  1. Abstract Factory抽象工厂模式:构建抽象工厂,它会将抽象零件组装为抽象产品

详见:设计模式学习(九):Abstract Factory抽象工厂模式

  1. lterator迭代器模式:在数据集合中按照顺序遍历集合

详见:设计模式学习(十):lterator迭代器模式

  1. Builder建造者模式:组装具有复杂结构的实例

详见:设计模式学习(十一):Builder建造者模式

  1. Decorator装饰器模式:保证装饰物与被装饰物的一致性

详见:设计模式学习(十二):Decorator装饰器模式


二、设计模式之间的关联和区别



2.1 关联和区别


  1. Bridge模式是为了关联“类的实现层次结构”和“类的功能层次结构”。在Template Method模式中就使用了“类的实现层次结构”:父类调用抽象方法,而子类实现抽象方法。
  2. 使用Bridge模式可以达到类的功能层次结构与类的实现层次结构分离的目的,并在此基础上使这些层次结构结合起来。而使用Adapter模式则可以结合那些功能上相似但是接口不同的类。
  3. Adapter模式用于填补不同接口之间的缝隙,而Decorator模式则是在不改变接口的前提下增加功能。
  4. 使用Strategy模式可以整体地替换算法。使用Abstract Factory模式则可以整体地替换具体工厂、零件和产品。
  5. 在Template Method模式中,可以使用继承改变程序的行为。这是因为Template Method模式在父类中定义程序行为的框架,在子类中决定具体的处理。与此相对的是Strategy模式,它可以使用委托改变程序的行为。与Template Method模式中改变部分程序行为不同的是,Strategy模式用于替换整个算法。
  6. 使用Strategy模式和State模式都可以替换被委托对象,而且它们的类之间的关系也很相似。但是两种模式的目的不同。在Strategy模式中,ConcreteStrategy 角色是表示算法的类。在Strategy模式中,可以替换被委托对象的类。当然如果没有必要,也可以不替换。而在State模式中,ConcreteState角色是表示“状态”的类。在State模式中,每次状态变化时,被委托对象的类都必定会被替换。
  7. Factory Method模式是将Template Method模式用于生成实例的一个典型例子。
  8. Adapter模式适配了两种具有不同接口(API)的对象,以使它们可以一同工作。而在Proxy模式中,Proxy角色与RealSubject角色的接口(API)是相同的(透明性)。
  9. Decorator模式与Proxy模式在实现上很相似,不过它们的使用目的不同。Decorator模式的目的在于增加新的功能。而在Proxy模式中,与增加新功能相比,它更注重通过设置代理人的方式来减轻本人的工作负担。
  10. Abstract Factory模式通过调用抽象产品的接口来组装抽象产品,生成具有复杂结构的实例。Builder模式则是分阶段地制作复杂实例。
  11. 在 Builder模式中,Director角色控制 Builder角色。在Template Method模式中,父类控制子类。这里的“控制”指的是方法的调用顺序的控制。在Builder模式中,Director 决定了Builder角色中方法的调用顺序,而在Template Method模式中,父类决定了子类方法的调用顺序。
  12. Builder模式和Abstract Factory模式都用于生成复杂的实例。
  13. Decorator模式可以在不改变被装饰物的接口(API)的前提下,为被装饰物添加边框(透明性)。Adapter模式用于适配两个不同的接口(API )。
  14. Decorator模式可以像改变被装饰物的边框或是为被装饰物添加多重边框那样,来增加类的功能。Stragety模式通过整体地替换算法来改变类的功能。


2.2 互相使用


  1. 在Bridge模式中,为了能够根据需求设计出良好的ConcreteImplementor角色,有时我们会使用AbstractFactory模式。
  2. 有时,在 Iterator模式中使用iterator方法生成Iterator的实例时会使用Factory Method模式。
  3. 有时,Abstract Factory模式中零件和产品的生成会使用到Factory Method模式。
  4. 有时,在iterator方法中生成Iterator的实例时可能会使用Factory Method模式。

相关文章
|
6月前
|
设计模式 存储 前端开发
MVVM、MVC、MVP三种常见软件架构设计模式的区别
MVC、MVP 和 MVVM 是三种常见的软件架构设计模式,主要通过分离关注点的方式来组织代码结构,优化开发效率。
141 12
|
7月前
|
设计模式 UED
二十三种设计模式:解锁软件开发的神器:命令模式与撤销重做功能
二十三种设计模式:解锁软件开发的神器:命令模式与撤销重做功能
182 0
|
设计模式 算法 程序员
设计模式的概述及各个模式的功能介绍
设计模式的概述及各个模式的功能介绍
124 0
|
3月前
|
设计模式 算法 PHP
PHP中的设计模式:策略模式的深入探索与实践在软件开发的广袤天地中,PHP以其独特的魅力和强大的功能,成为无数开发者手中的得力工具。而在这条充满挑战与机遇的征途上,设计模式犹如一盏明灯,指引着我们穿越代码的迷雾,编写出更加高效、灵活且易于维护的程序。今天,就让我们聚焦于设计模式中的璀璨明珠——策略模式,深入探讨其在PHP中的实现方法及其实际应用价值。
策略模式,这一设计模式的核心在于它为软件设计带来了一种全新的视角和方法。它允许我们在运行时根据不同情况选择最适合的解决方案,从而极大地提高了程序的灵活性和可扩展性。在PHP这门广泛应用的编程语言中,策略模式同样大放异彩,为开发者们提供了丰富的创作空间。本文将从策略模式的基本概念入手,逐步深入到PHP中的实现细节,并通过一个具体的实例来展示其在实际项目中的应用效果。我们还将探讨策略模式的优势以及在实际应用中可能遇到的挑战和解决方案,为PHP开发者提供一份宝贵的参考。
|
3月前
|
设计模式 存储 算法
PHP中的设计模式:策略模式的深入解析与应用在软件开发的浩瀚海洋中,PHP以其独特的魅力和强大的功能吸引了无数开发者。作为一门历史悠久且广泛应用的编程语言,PHP不仅拥有丰富的内置函数和扩展库,还支持面向对象编程(OOP),为开发者提供了灵活而强大的工具集。在PHP的众多特性中,设计模式的应用尤为引人注目,它们如同精雕细琢的宝石,镶嵌在代码的肌理之中,让程序更加优雅、高效且易于维护。今天,我们就来深入探讨PHP中使用频率颇高的一种设计模式——策略模式。
本文旨在深入探讨PHP中的策略模式,从定义到实现,再到应用场景,全面剖析其在PHP编程中的应用价值。策略模式作为一种行为型设计模式,允许在运行时根据不同情况选择不同的算法或行为,极大地提高了代码的灵活性和可维护性。通过实例分析,本文将展示如何在PHP项目中有效利用策略模式来解决实际问题,并提升代码质量。
|
4月前
|
设计模式 测试技术
依赖注入与工厂设计模式的区别
【8月更文挑战第22天】
72 0
|
5月前
|
存储 算法 调度
iLogtail设计模式问题之如何确定定时任务框架的功能边界和目标
iLogtail设计模式问题之如何确定定时任务框架的功能边界和目标
|
7月前
|
设计模式 算法
设计模式思考,简单工厂模式和策略模式的区别?
设计模式思考,简单工厂模式和策略模式的区别?
|
7月前
|
设计模式 API
【设计模式】适配器和桥接器模式有什么区别
【设计模式】适配器和桥接器模式有什么区别
169 1
|
7月前
|
设计模式 JavaScript Java
[设计模式Java实现附plantuml源码~结构型] 扩展系统功能——装饰模式
[设计模式Java实现附plantuml源码~结构型] 扩展系统功能——装饰模式
下一篇
DataWorks