• <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
            來自于《大話設(shè)計模式》
            策略模式(Strategy):它定義了算法家族,分別封裝起來,讓它們之間可以相互替換,此模式讓算法的變化不會影響到使用算法的客戶。

            所謂的算法即使 acceptCash 虛函數(shù),由 CashSuper 的派生類實現(xiàn)各個 acceptCash。客戶端代碼根據(jù)使用不同的參數(shù)生成不同的 CashContext 對象,來使用不同的策略(acceptCash 虛函數(shù))

            UML 圖:


            代碼實現(xiàn) C++:
             1 #include <iostream>
             2 using namespace std;
             3 
             4 class CashSuper
             5 {
             6 public:
             7     virtual double acceptCash(double money) = 0;
             8 };
             9 
            10 class CashNormal : public CashSuper
            11 {
            12 public:
            13     virtual double acceptCash(double money)
            14     {
            15         return money;
            16     }
            17 };
            18 
            19 class CashRebate : public CashSuper
            20 {
            21 private:
            22     double moneyRebate;
            23 public:
            24     CashRebate(double mr = 1.0) : moneyRebate(mr) {}
            25     virtual double acceptCash(double money)
            26     {
            27         return money * moneyRebate;
            28     }
            29 };
            30 
            31 class CashReturn : public CashSuper
            32 {
            33 private:
            34     double moneyCondition;
            35     double moneyReturn;
            36 public:
            37     CashReturn(double c = 1.0double r = 1.0) : moneyCondition(c), moneyReturn(r) {}
            38     virtual double acceptCash(double money)
            39     {
            40         return money - money / moneyCondition * moneyReturn;
            41     }
            42 };
            43 
            44 class CashContext
            45 {
            46 private:
            47     CashSuper* cs;
            48 public:
            49     CashContext()
            50     {
            51         cs = new CashNormal;
            52         // cs = new CashNormal();
            53     }
            54     CashContext(double r)
            55     {
            56         cs = new CashRebate(r);
            57     }
            58     CashContext(double c, double r)
            59     {
            60         cs = new CashReturn(c, r);
            61     }
            62     ~CashContext()
            63     {
            64         delete cs;
            65     }
            66     double GetResult(double money)
            67     {
            68         return cs->acceptCash(money);
            69     }
            70 };
            71 
            72 int main()
            73 {
            74     CashContext* cc = new CashContext;
            75     cout << cc->GetResult(300<< endl;
            76     delete cc;
            77 
            78     cc = new CashContext(0.8);
            79     cout << cc->GetResult(300<< endl;
            80     delete cc;
            81 
            82     cc = new CashContext(10050);
            83     cout << cc->GetResult(300<< endl;
            84     delete cc;
            85 
            86     return 0;
            87 }
            posted on 2011-04-23 16:27 unixfy 閱讀(160) 評論(0)  編輯 收藏 引用

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


            久久综合给合综合久久| 久久精品国产亚洲AV嫖农村妇女| 日本精品久久久中文字幕| 91精品国产高清久久久久久国产嫩草 | 四虎国产永久免费久久| 国产精品无码久久四虎| 亚洲а∨天堂久久精品9966| 伊人久久精品无码av一区| 国产精品久久久久…| 亚洲精品无码久久久| 国内精品伊人久久久久777| 久久久一本精品99久久精品88| 精品国产福利久久久| 亚洲七七久久精品中文国产| 国产精品久久久久AV福利动漫| 久久久久亚洲爆乳少妇无| 久久久久人妻一区精品色| 欧美激情精品久久久久久| 久久99国产综合精品免费| 日韩影院久久| 久久久久国色AV免费看图片| 久久久久99精品成人片直播| 久久久精品久久久久久| 99久久婷婷免费国产综合精品| 欧美激情一区二区久久久| 久久成人精品| 久久99久久成人免费播放| 久久国产精品无码一区二区三区 | 久久久久亚洲爆乳少妇无 | 久久精品国产2020| 无码任你躁久久久久久老妇| 国产高潮国产高潮久久久91| 99热成人精品热久久669| 久久99亚洲网美利坚合众国| 国产精品成人久久久| 色婷婷久久综合中文久久一本| 久久精品成人免费国产片小草| 久久se精品一区精品二区| 久久99国产精品久久99果冻传媒| 精品久久久久久无码中文字幕一区| 久久久精品人妻一区二区三区蜜桃 |