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

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

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

    活到老,學到老

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

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


    網站導航:
     
    主站蜘蛛池模板: 国产成人不卡亚洲精品91| 亚洲熟妇AV一区二区三区宅男| 亚洲日韩小电影在线观看| 久久亚洲AV无码精品色午夜麻| 久久亚洲精品无码AV红樱桃| 中文字幕亚洲综合小综合在线| 男人和女人高潮免费网站| 国产精成人品日日拍夜夜免费| 无码人妻久久一区二区三区免费丨 | 美女视频黄的全免费视频| 免费人成视频在线观看视频| 亚洲情a成黄在线观看动漫尤物| 国产成人亚洲综合无| 成人免费看黄20分钟| 亚洲色婷婷六月亚洲婷婷6月| 你好老叔电影观看免费| 四虎免费在线观看| 亚洲视频在线不卡| 国产日韩AV免费无码一区二区三区| 99久久99这里只有免费费精品| 亚洲综合亚洲综合网成人| 国产精品亚洲片夜色在线| 日本免费一区二区三区最新| 久久亚洲日韩看片无码| AA免费观看的1000部电影| 日韩国产欧美亚洲v片| 最近中文字幕无免费| 亚洲色婷婷综合久久| 最近中文字幕电影大全免费版| 亚洲va精品中文字幕| 日韩精品内射视频免费观看| 中文字幕第一页亚洲| 特级毛片全部免费播放| 毛片免费视频在线观看| 亚洲欧洲国产经精品香蕉网| 免费萌白酱国产一区二区三区| www.亚洲精品.com| 亚洲国产精品日韩av不卡在线| 国产一卡二卡3卡四卡免费| 老湿机一区午夜精品免费福利 | 亚洲A∨无码一区二区三区|