<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    活到老,學(xué)到老

      BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
      9 Posts :: 1 Stories :: 2 Comments :: 0 Trackbacks
        從今天開始,把常用的設(shè)計模式都簡單的整理一遍,希望每個星期能至少整理2個模式吧,先從簡單的策略模式開始。
        
        概念:它定義了一系列的算法,并將每一個算法封裝起來,而且使它們還可以相互替換。策略模式讓算法的變化不會影響到使用算法的客戶。
        
        策略模式很簡單,實際上就是OO中的多態(tài),舉個例子,某商場要進行促銷,對于普通顧客打88折,對于銀卡客戶在88折基礎(chǔ)上再滿400減160,對于金卡客戶在88折基礎(chǔ)上再滿400減200。
        
        
    UML圖如下所示:
        

        接口DiscountStrategy代碼如下:
        
    public interface DiscountStrategy {
        
    public double discount(double
     sum);
    }

        類GeneralDiscountStrategy類代碼如下:
        
    public class GeneralDiscountStrategy implements DiscountStrategy {

        @Override
        
    public double discount(double sum) 
    {
            
    return sum * 0.88
    ;
        }


    }

        類SilverDiscountStrategy類代碼如下:
        
    public class SilverDiscountStrategy implements DiscountStrategy {

        @Override
        
    public double discount(double sum) 
    {
            sum 
    = sum * 0.88
    ;
            
    int t = (int) sum / 400
    ;
            sum 
    = sum - t * 160
    ;
            
    return
     sum;
        }

    }

        類GoldenDiscountStrategy代碼如下:
        
    public class GoldenDiscountStrategy implements DiscountStrategy {

        @Override
        
    public double discount(double sum) 
    {
            sum 
    = sum * 0.88
    ;
            
    int t = (int) sum / 400
    ;
            sum 
    = sum - t * 200
    ;
            
    return
     sum;
        }

    }

        類Cashier代碼如下:
        
    public class Cashier {
        
    private DiscountStrategy discountStrategy = new
     GeneralDiscountStrategy();

        
    public void getDiscountStrategy(CustomerLevel customerLevel) 
    {
            
    switch (customerLevel) 
    {
                
    case
     GENERAL:
                    discountStrategy 
    = new
     GeneralDiscountStrategy();
                    
    break
    ;
                
    case
     SILVER:
                    discountStrategy 
    = new
     SilverDiscountStrategy();
                    
    break
    ;
                
    case
     GOLDEN:
                    discountStrategy 
    = new
     GeneralDiscountStrategy();
                    
    break
    ;
            }

        }


        
    public double calculate(double price, int num) {
            
    return discountStrategy.discount(price *
     num);
        }

    }
    posted on 2011-04-06 22:56 simon.shen 閱讀(360) 評論(0)  編輯  收藏 所屬分類: 設(shè)計模式

    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
    相關(guān)文章:
     
    主站蜘蛛池模板: 在线91精品亚洲网站精品成人| 激情五月亚洲色图| 国产精品免费久久久久久久久| 国产免费av片在线播放 | 亚洲成av人在线视| 国产免费久久精品99久久| 久久久久亚洲AV成人网人人软件| 性生大片视频免费观看一级| mm1313亚洲精品无码又大又粗 | 亚洲av综合日韩| 国产人妖ts在线观看免费视频| 久久亚洲精品高潮综合色a片| 国产精品免费一级在线观看| 青娱乐在线视频免费观看| 区三区激情福利综合中文字幕在线一区亚洲视频1| 亚洲欧美日韩综合俺去了| 日本免费观看网站| 又黄又大的激情视频在线观看免费视频社区在线 | 国产小视频免费观看| 麻豆69堂免费视频| 国内精品久久久久久久亚洲| 亚洲高清有码中文字| 国产精品久久免费视频| 全部一级一级毛片免费看| 国产亚洲精品国产| 999在线视频精品免费播放观看| 亚洲一区二区三区成人网站 | 久久精品国产亚洲Aⅴ蜜臀色欲 | 夭天干天天做天天免费看| 国产精品亚洲综合网站| 亚洲精品高清无码视频| 一色屋成人免费精品网站| 成人亚洲国产精品久久| 久久91亚洲人成电影网站| 国产91色综合久久免费| 国产精品久久亚洲一区二区| 久久亚洲精品视频| 猫咪社区免费资源在线观看 | 国产91免费在线观看| 国产亚洲人成在线影院| 亚洲a在线视频视频|