當(dāng)前位置:
首頁(yè) >
3_5 ResponsibilityChainMode 责任链模式
發(fā)布時(shí)間:2024/4/11
48
豆豆
生活随笔
收集整理的這篇文章主要介紹了
3_5 ResponsibilityChainMode 责任链模式
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
// 定義:使多個(gè)對(duì)象都有機(jī)會(huì)處理請(qǐng)求,從而避免請(qǐng)求的發(fā)送者
// 和接收者之間的耦合關(guān)系
//
// 模式舉例:員工要求加薪,500以內(nèi)項(xiàng)目經(jīng)理直接批準(zhǔn),500-1000
// 技術(shù)總監(jiān)批準(zhǔn),1000以上得找總經(jīng)理批準(zhǔn),都是向項(xiàng)目經(jīng)理
// 提出加薪,最終是誰(shuí)批準(zhǔn)要看金額
//
// 模式特點(diǎn):
//
//#include<iostream>
#include<string>
using namespace std;class Manager
{
public:Manager(string name,Manager * manager){m_name = name;m_manager = manager;}virtual void dealRequest(string name,int count)=0;protected:string m_name; //自己名字Manager * m_manager; //頂頭上司
};//項(xiàng)目經(jīng)理
class ProjectManager : public Manager
{
public:ProjectManager(string name,Manager * manager):Manager(name,manager){}virtual void dealRequest(string name,int count){if(count < 500){cout<<m_name<<" 批準(zhǔn) "<<name<<" 漲薪"<<count<<endl;}else{m_manager->dealRequest(name,count);}}
};//總監(jiān)
class Majordomo : public Manager
{
public:Majordomo(string name,Manager * manager):Manager(name,manager){}virtual void dealRequest(string name,int count){if(count < 1000){cout<<m_name<<" 批準(zhǔn) "<<name<<" 漲薪"<<count<<endl;}else{m_manager->dealRequest(name,count);}}
};//總經(jīng)理
class GeneralManager : public Manager
{
public:GeneralManager(string name,Manager * manager):Manager(name,manager){}virtual void dealRequest(string name,int count){if(count >= 1000){cout<<m_name<<" 批準(zhǔn) "<<name<<" 漲薪"<<count<<endl;}else{m_manager->dealRequest(name,count);}}
};int main()
{Manager * generalManager = new GeneralManager("總經(jīng)理",NULL);Manager * majordomo = new Majordomo("技術(shù)總監(jiān)",generalManager);Manager * projectManager = new ProjectManager("項(xiàng)目經(jīng)理",majordomo);projectManager->dealRequest("小明",400);projectManager->dealRequest("小麗",800);projectManager->dealRequest("老王",1100);return 0;
}
?
總結(jié)
以上是生活随笔為你收集整理的3_5 ResponsibilityChainMode 责任链模式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 3_10 MediaMode 中介者模式
- 下一篇: 动态语言和静态语言的比较