• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 183,  comments - 10,  trackbacks - 0

            職責(zé)鏈模式(Chain of Responsibility):
            使多個(gè)對象都有機(jī)會處理請求,從而避免請求的發(fā)送者和接受者之間的耦合關(guān)系。將這個(gè)對象連成一條鏈,并沿著這條鏈傳遞該請求,直到有一個(gè)對象處理它為止。

            行為型

            UML 類圖:



            代碼實(shí)現(xiàn) C++:

              1 #include <iostream>
              2 #include <string>
              3 using namespace std;
              4 
              5 class Request
              6 {
              7 public:
              8     string requestType;
              9     string requestContent;
             10     int    number;
             11 };
             12 
             13 class Manager
             14 {
             15 protected:
             16     string name;
             17     Manager* superior;
             18 public:
             19     Manager(const string& s) : name(s), superior(0) {}
             20     void SetSuperior(Manager* m)
             21     {
             22         superior = m;
             23     }
             24     virtual void RequestApplications(Request* request) = 0;
             25 };
             26 
             27 class CommonManager : public Manager
             28 {
             29 public:
             30     CommonManager(const string& s) : Manager(s) {}
             31     virtual void RequestApplications(Request* request)
             32     {
             33         if (request->requestType == "請假" && request->number <= 2)
             34         {
             35             cout << name << "" << request->requestContent << " 數(shù)量 " << request->number << " 被批準(zhǔn)!" << endl;
             36         }
             37         else if (superior != 0)
             38         {
             39             superior->RequestApplications(request);
             40         }
             41         else
             42         {
             43             cout << "不能得到處理!" << endl;
             44         }
             45     }
             46 };
             47 
             48 class Majordomo : public Manager
             49 {
             50 public:
             51     Majordomo(const string& s) : Manager(s) {}
             52     virtual void RequestApplications(Request* request)
             53     {
             54         if (request->requestType == "請假" && request->number <= 5)
             55         {
             56             cout << name << "" << request->requestContent << " 數(shù)量 " << request->number << " 被批準(zhǔn)!" << endl;
             57         }
             58         else if (superior != 0)
             59         {
             60             superior->RequestApplications(request);
             61         }
             62         else
             63         {
             64             cout << "不能得到處理!" << endl;
             65         }
             66     }
             67 };
             68 
             69 class GeneralManager : public Manager
             70 {
             71 public:
             72     GeneralManager(const string& s) : Manager(s) {}
             73     virtual void RequestApplications(Request* request)
             74     {
             75         if (request->requestType == "請假")
             76         {
             77             cout << name << "" << request->requestContent << " 數(shù)量 " << request->number << " 被批準(zhǔn)!" << endl;
             78         }
             79         else if (request->requestType == "加薪" && request->number <= 500)
             80         {
             81             cout << name << "" << request->requestContent << " 數(shù)量 " << request->number << " 被批準(zhǔn)!" << endl;
             82         }
             83         else if (request->requestType == "加薪" && request->number > 500)
             84         {
             85             cout << name << "" << request->requestContent << " 數(shù)量 " << request->number << " 再說吧!" << endl;
             86         }
             87         else if (superior != 0)
             88         {
             89             superior->RequestApplications(request);
             90         }
             91         else
             92         {
             93             cout << "不能得到處理!" << endl;
             94         }
             95     }
             96 };
             97 
             98 int main()
             99 {
            100     CommonManager* jinli    = new CommonManager("金利");
            101     Majordomo*     zongjian = new Majordomo("宗劍");
            102     GeneralManager* zhongjingli = new GeneralManager("鐘精勵(lì)");
            103 
            104     jinli->SetSuperior(zongjian);
            105     zongjian->SetSuperior(zhongjingli);
            106 
            107     Request* request = new Request;
            108     request->requestType = "請假";
            109     request->requestContent = "小菜請假";
            110     request->number = 1;
            111     jinli->RequestApplications(request);
            112 
            113     Request* request2 = new Request;
            114     request2->requestType = "請假";
            115     request2->requestContent = "小菜請假";
            116     request2->number = 4;
            117     jinli->RequestApplications(request2);
            118 
            119     Request* request3 = new Request;
            120     request3->requestType = "加薪";
            121     request3->requestContent = "小菜請求加薪";
            122     request3->number = 500;
            123     jinli->RequestApplications(request3);
            124 
            125     Request* request4 = new Request;
            126     request4->requestType = "加薪";
            127     request4->requestContent = "小菜請求加薪";
            128     request4->number = 1000;
            129     jinli->RequestApplications(request4);
            130 
            131     return 0;
            132 }
            posted on 2011-04-30 11:07 unixfy 閱讀(196) 評論(0)  編輯 收藏 引用

            只有注冊用戶登錄后才能發(fā)表評論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            久久婷婷五月综合97色直播| 久久天堂AV综合合色蜜桃网| 国产精品一区二区久久精品无码| 办公室久久精品| 久久亚洲AV成人无码| 久久久久99精品成人片欧美| 国产毛片久久久久久国产毛片 | 久久精品亚洲男人的天堂| 最新久久免费视频| 天天久久狠狠色综合| 久久精品中文字幕一区| 国产ww久久久久久久久久| 怡红院日本一道日本久久 | 久久伊人中文无码| 久久超碰97人人做人人爱| 亚洲国产日韩综合久久精品| 久久这里只精品国产99热| 色婷婷综合久久久中文字幕| 青青草原综合久久大伊人导航| 乱亲女H秽乱长久久久| 香港aa三级久久三级老师2021国产三级精品三级在 | 97久久国产综合精品女不卡| 一本色道久久88加勒比—综合| 香蕉99久久国产综合精品宅男自 | 国产精品狼人久久久久影院 | 久久精品免费观看| 日韩人妻无码精品久久免费一| 欧美伊人久久大香线蕉综合69| 亚洲国产成人久久综合一 | 久久精品这里热有精品| 精品久久亚洲中文无码| 蜜桃麻豆WWW久久囤产精品| 热久久国产欧美一区二区精品| 国产成人AV综合久久| 久久青草国产手机看片福利盒子| 午夜欧美精品久久久久久久| 久久久久亚洲国产| 国产亚洲美女精品久久久2020| 热久久国产欧美一区二区精品| 亚洲精品成人久久久| 蜜桃麻豆WWW久久囤产精品|