设计模式——响应链模式

本文介绍了设计模式中的响应链模式,旨在降低请求发送者和接收者的耦合关系。通过员工加薪的例子,展示了如何创建一个处理请求的管理层级,包括经理、总监和总经理。每个管理者都有机会处理请求,直到找到合适的处理者。代码实现中,定义了抽象管理者类Manager,以及经理、总监和总经理的子类,实现了请求的逐级处理。测试案例演示了如何调用这些管理者处理加薪请求。
摘要由CSDN通过智能技术生成

 首先纠正国人的错误翻译, Responsibility 虽然字典里翻译为职责,然而确是由Response派生出来的词,结合此模式的原意,故此处应该翻译为响应更合适,或者说,垃圾字典里至少也应添加"响应"作为另一中文词.


软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径。设计模式中运用了面向对象编程语言的重要特性:封装、继承、多态,真正领悟设计模式的精髓是可能一个漫长的过程,需要大量实践经验的积累。最近看设计模式的书,对于每个模式,用C++写了个小例子,加深一下理解。主要参考《大话设计模式》和《设计模式:可复用面向对象软件的基础》两本书。

       响应链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。其思想很简单,考虑员工要求加薪。公司的管理者一共有三级,总经理、总监、经理,如果一个员工要求加薪,应该向主管的经理申请,如果加薪的数量在经理的职权内,那么经理可以直接批准,否则将申请上交给总监。总监的处理方式也一样,总经理可以处理所有请求。这就是典型的响应链模式,请求的处理形成了一条链,直到有一个对象处理请求。给出这个例子的UML图。


        代码的实现比较简单,如下所示:


  1. //抽象管理者  
  2. class Manager  
  3. {  
  4. protected:  
  5.     Manager *m_manager;  
  6.     string m_name;  
  7. public:  
  8.     Manager(Manager *manager, string name):m_manager(manager), m_name(name){}  
  9.     virtual void DealWithRequest(string name, int num)  {}  
  10. };  
  11. //经理  
  12. class CommonManager: public Manager  
  13. {  
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值