首页 > 其他分享 >职责链、命令和观察者设计模式的区别

职责链、命令和观察者设计模式的区别

时间:2024-07-22 19:27:31浏览次数:17  
标签:请求 处理 观察者 模式 命令 设计模式 职责

职责链、命令和观察者是三种不同的设计模式,它们各自解决不同类型的问题。下面分别介绍这三种设计模式的特点和区别:

1. 职责链模式(Chain of Responsibility)

定义:

职责链模式是一种行为设计模式,它通过将请求的处理者组织成一个链,使得请求可以沿这条链传递,直到有一个处理者处理该请求为止。

主要特点:
  • 解耦请求发送者和接收者:发送者不用知道具体哪一个处理者来处理请求。
  • 动态调整处理者:可以在运行时改变链的结构,添加或删除处理者。
  • 可以实现多个请求的顺序处理
应用场景:
  • 事件处理系统:例如在GUI中,用户事件的处理。
  • 游戏中的多种状态或请求处理。

2. 命令模式(Command)

定义:

命令模式是一种行为设计模式,它将请求封装为对象,从而使您可以参数化客户代码、延迟请求的执行、支持日志功能以及支持取消操作。

主要特点:
  • 请求的封装:将请求封装成一个对象,可以传递、存储和执行。
  • 支持撤销和重做:可以通过保存命令对象的历史来实现撤销和重做。
  • 解耦命令的发送者和接收者:发送者不需要知道具体的接收者,只需要知道命令。
应用场景:
  • GUI按钮的操作:例如,实现“保存”、“加载”等功能。
  • 执行队列中的任务,并允许撤销功能。

3. 观察者模式(Observer)

定义:

观察者模式是一种行为设计模式,当一个对象(主题)发生变化时,所有依赖于它的对象(观察者)都会收到通知并自动更新。

主要特点:
  • 一对多的依赖关系:主题与观察者之间是松耦合的,观察者不需要知道主题的内部实现。
  • 自动更新:观察者能自动获得状态变化的通知。
  • 动态的观察者注册和注销:观察者可以在运行时注册和注销。
应用场景:
  • 事件监听:在GUI编程中监测用户的输入或行为。
  • 数据变化通知:例如在MVC架构中更新视图。

总结区别:

特点职责链模式命令模式观察者模式
目的请求的处理链请求的封装建立一对多的通知机制
结构处理者链命令对象主题(Subject)和观察者(Observers)
交互方式请求沿链传播通过命令对象调用主题通知所有观察者
适用场景事件处理、职责转移UI操作、命令历史事件监听、数据变化通知

这些设计模式在软件设计中各具优势,合理利用可以有效提高系统的灵活性和可维护性。

标签:请求,处理,观察者,模式,命令,设计模式,职责
From: https://blog.csdn.net/m0_65347933/article/details/140617783

相关文章

  • 设计模式之观察者模式(学习笔记)
    定义观察者模式是一种行为型设计模式,它定义了一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会收到通知并自动更新。这种模式用于实现对象之间的解耦,使得一个对象的变化可以通知并更新多个依赖对象,而无需直接引用它们。为什么使用观察者模式?解耦观......
  • Linux C++ 065-设计模式之组合模式
    LinuxC++065-设计模式之组合模式本节关键字:Linux、C++、设计模式、组合模式相关库函数:概念组合模式(CompositePattern),又叫做部分-整体模式,使得用户对单个对象和组合对象的使用具有一致性。它使我们树型结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以像处理......
  • Linux C++ 066-设计模式之访问者模式
    LinuxC++066-设计模式之访问者模式本节关键字:Linux、C++、设计模式、访问者模式相关库函数:概念在访问者模式(VisitorPattern)中,我们使用了一个访问者类,它改变了元素类的执行算法。通过这种方式,元素的执行算法可以随着访问者改变而改变。这种类型的设计模式属于行为型模......
  • Perl中的设计模式革新:命令模式的实现与应用
    Perl中的设计模式革新:命令模式的实现与应用在面向对象编程中,设计模式是解决特定问题的成熟模板。命令模式作为行为设计模式之一,它将请求封装为对象,从而允许用户根据不同的请求对客户进行参数化。本文将深入探讨如何在Perl中实现命令模式,并提供详细的代码示例,帮助开发者在Pe......
  • 观察者模式实战:Spring Boot中联动更新机制的优雅实现
    引言在许多应用系统中,我们经常需要处理多个表之间的关联更新问题。例如,在教育管理系统中,当学生的基本信息表中的年龄字段发生更改时,我们可能还需要同步更新学生档案表和学生成绩表中的相关信息。本文将通过一个具体的案例,介绍如何在SpringBoot项目中利用观察者模式来优雅地解......
  • 设计模式之行为型模式
    行为型模式关注流程控制。行为型模式用于描述程序在运行时复杂的流程控制,即描述多个类或对象之间怎样相互协作共同完成单个对象无法完成的任务,涉及算法与对象间职责的分配。类行为模式:采用继承机制来在类间分派行为对象行为模式:采用组合或聚合在对象间分配行为行......
  • 单例设计模式
    单例设计模式:设计模式:​一个问题通常有n种解法,其中肯定有一种解法是最优的,这个最优的解法被人总结出来了,称之为设计模式。​设计模式有23种,对应23种软件开发中会遇到的经典问题。单例设计模式:确保一个类只有一个对象。  饿汉式单例:饿汉式单例:拿对象时,对象......
  • 模板方法设计模式
    模板方法设计模式:模板方法设计模式:解决方法中存在重复代码的问题。  模板方法设计模式的写法:1、定义一个抽象类2、在里面定义2个方法​一个是模板方法:把相同代码放里面去​一个是抽象方法:具体实现交给子类完成建议使用final关键字修饰模板方法:​模板方......
  • 设计模式
    总的总结策略模式:注入接口观察者模式:事件与监听器责任链模式:方法三抽象类代理模式:aop适配器模式单例模式建造者模式@Builder工厂模式......
  • 设计模式之适配器模式(学习笔记)
    定义 适配器模式是一种结构型设计模式,它允许将一个类的接口转换为客户端希望的另一个接口。适配器使得原本由于接口不兼容而不能一起工作的类可以协同工作。通过创建适配器类,可以将现有类的接口转换成目标接口,从而使这些类能够在一起工作。为什么使用适配器模式兼容性适......