首页 > 其他分享 >学习高校课程-软件设计模式-责任链模式和命令模式(lec9)

学习高校课程-软件设计模式-责任链模式和命令模式(lec9)

时间:2024-10-31 20:20:32浏览次数:5  
标签:请求 chain 软件设计 GUI request 模式 Command 处理程序 lec9

原文链接

Chain of Responsibility: Problem

Example: an online ordering system
示例:在线订购系统
– The request must pass a series of checks
– New requirements: validation, filtering repeated failed requests, speeding up by returning cached results, and more
– 请求必须通过一系列检查
– 新要求:验证、过滤重复失败的请求、通过返回缓存结果来加速等等

Chain of Responsibility: Solution

The pattern suggests that you link these handlers into a chain. Each linked handler has a field for storing a reference to the next handler in the chain. In addition to processing a request, handlers pass the request further along the chain. The request travels along the chain until all handlers have had a chance to process it.
该模式建议您将这些处理程序链接到一条链中。每个链接的处理程序都有一个字段,用于存储对链中下一个处理程序的引用。除了处理请求之外,处理程序还会沿着链进一步传递请求。请求沿着链传播,直到所有处理程序都有机会处理它

Command: Problem

Before long, you realize that this approach is deeply flawed. First, you have an enormous number of subclasses, and that would be okay if you weren’t risking breaking the code in these subclasses each time you modify the base Button class. Put simply, your GUI code has become awkwardly dependent on the volatile code of the business logic.
不久之后,您就会意识到这种方法存在严重缺陷。首先,您有大量的子类,如果您每次修改Button基类时不会冒破坏这些子类中的代码的风险,那就没问题。简而言之,您的 GUI 代码已经变得笨拙地依赖于业务逻辑的易失性代码。

Command: Solution

Principle of separation of concerns
关注点分离原则

  • Breaking an app into layers
    将应用程序分成多个层
  • Common example: a layer for GUI, and another for business logic
    常见示例:一个用于 GUI 的层,另一个用于业务逻辑

Command (aka Action or Transaction)
命令(又名操作或事务)

  • GUI objects should not send request directly
    GUI 对象不应直接发送请求
  • Extract request details into a separate Command class with a single method that triggers this request
    使用触发此请求的单一方法将请求详细信息提取到单独的 Command 类中

Commands become a convenient middle layer, reducing coupling between the GUI and business logic
命令成为方便的中间层,减少GUI和业务逻辑之间的耦合

Making commands implement the same interface
使命令实现相同的接口

标签:请求,chain,软件设计,GUI,request,模式,Command,处理程序,lec9
From: https://www.cnblogs.com/Mephostopheles/p/18518739

相关文章

  • 学习高校课程-软件设计模式-享元模式和代理模式(lec8)
    原文链接Flyweight:ProblemEachparticle,suchasabullet,amissileorapieceofshrapnelwasrepresentedbyaseparateobjectcontainingplentyofdata.Atsomepoint,whenthecarnageonaplayer’sscreenreacheditsclimax,newlycreatedparticlesno......
  • Python——石头剪刀布(附源码+多模式二改优化版)
    编程初学者通常会从简单的项目开始,以建立基础并增强信心。石头剪刀布游戏是一个很好的起点,因为它涉及到基本的逻辑判断、用户输入处理和随机数生成。本文将详细介绍如何使用Python编写一个石头剪刀布游戏,并提供完整的代码和解释。目录一、游戏介绍二、基本代码解析与实现......
  • Flink On Yarn运行模式:会话模式部署、单作业模式部署、应用模式部署
    YARN上部署的过程是:客户端把Flink应用提交给Yarn的ResourceManager,Yarn的ResourceManager会向Yarn的NodeManager申请容器。在这些容器上,Flink会部署JobManager和TaskManager的实例,从而启动集群。Flink会根据运行在JobManger上的作业所需要的Slot数量动态分配TaskManager资......
  • vue3 类组件装饰器模式配置
    2024年10月31日vue3支持装饰器模式插件借助插件vue-facing-decorator实现类组件装饰器转换npminstall--save-devvue-facing-decorator@rollup/plugin-babel@babel/plugin-proposal-decorators@babel/plugin-proposal-class-propertiesvite.config.ts配置//第一种支......
  • AP5126 是一款 PWM 工作模式,高效率、外围简单、内置功率管,适用于 12-80V 输入的高精
    高性能摩托车灯降压恒流ic全亮/半亮/循环模式短路保护AP5126产品描述AP5126是一款PWM工作模式,高效率、外围简单、内置功率管,适用于12-80V输入的高精度降压LED恒流驱动芯片。输出最大功率可达15W,最大电流1.2A。AP5126可实现全亮/半亮功能切换,通过MODE切换:全亮/半亮/......
  • AP5127 是一款 PWM 工作模式,高效率、外围简单、内置功率管,适用于 12-100V 输入的高精
    产品描述AP5127是一款PWM工作模式,高效率、外围简单、内置功率管,适用于12-100V输入的高精度降压LED恒流驱动芯片。输出最大功率可达25W,最大电流2.5A。AP5127可实现全亮/半亮功能切换,通过MODE切换:全亮/半亮/循环模式。AP5127工作频率固定在140KHZ,同时内置抖频电路,......
  • AP5216 是一款 PWM工作模式, 高效率、外围简单、内置功率管,适用于5V~100V输入的高精度
    产品描述AP5216是一款PWM工作模式,高效率、外围简单、内置功率管,适用于5V~100V输入的高精度降压LED恒流驱动芯片。输出最大功率可达9W,最大电流1.0A。AP5216可实现全亮/半亮功能切换,通过MODE切换:全亮/半亮模式。AP5216工作频率固定在130KHZ,同时内置抖频电路,可以降低......
  • 一款连续电感电流导通模式的降压恒流源
    AP5165是一款连续电感电流导通模式的降压恒流源,用于驱动一颗或多颗串联LED输入电压范围从6V到30V,输出电流可调,最大可达1.2A。根据不同的输入电压和外部器件,AP5165可以驱动高达数十瓦的LED。AP5165内置功率开关,采用高端电流采样设置LED平均电流,通过DIM引脚可以接受模拟......
  • 学习高校课程-软件设计模式-组合模式、装饰器模式和外观模式(lec7)
    原文链接Composite:ProblemUsingtheCompositepatternmakessenseonlywhenthecoremodelofyourappcanberepresentedasatree.仅当应用程序的核心模型可以表示为树时,使用复合模式才有意义。Forexample,imaginethatyouhavetwotypesofobjects:Products......
  • 【云原生】云原生后端:最佳实践与设计模式
    这里写目录标题引言一、云原生的核心概念1.1云原生定义1.2关键特性1.3云原生vs.传统架构二、云原生最佳实践2.1微服务架构2.2采用容器化2.3持续集成与持续交付(CI/CD)2.4API驱动设计2.5服务发现与负载均衡三、常见设计模式3.1服务拆分模式3.2事件驱动架构3.......