国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

使用state pattern替代if else

2019-11-17 05:57:34
字體:
供稿:網(wǎng)友

      大多數(shù)開發(fā)人員現(xiàn)在還在使用if else的過程結(jié)構(gòu),曾看過jdon的banq大哥寫的一篇文章,利用command,aop模式替代if else過程結(jié)構(gòu)。當時還不太明白,這幾天看了《重構(gòu)》第一章的影片租賃案例,感慨頗深。下面我來談一談為什么要用state pattern替代if else,替代if else有什么好處,以及給出具體代碼怎么替代if else。本文參考jdon的“你還在使用if else嗎?”及《重構(gòu)》第一章。
 

首先我們模擬影片租賃過程,顧客租憑影片,影片分為兒童片、普通片、新片。根據(jù)影片類型及租憑天數(shù)價格各不相同(優(yōu)惠程度不同),用戶累計積分不同。

 

OK ,現(xiàn)在我們使用 if else 表示。

 


 package  com.qujingbo.movie;

 /** */ /**
 * <p/> Title:影片基類
 * </p>
 * <p/> Description:
 * </p>
 * <p/> Date:2006-10-14 15:47:55
 * </p>
 *
 *  @author  EOMS 曲靜波
 *  @version  1.0
  */
  public   class  Movie   {

      //  普通片標識
       public   static   int  REGULAR  =   1 ;
   
      //  新片標識
       public   static   int  NEW_RELEASE  =   2 ;
   
      //  兒童片標識
       public   static   int  CHILDREN  =   3 ;
   
      /** */ /**
     * 獲取租賃影片總價
     *
     *  @param  movieCode
     * 影片類型
     *  @param  days
     * 租憑天數(shù)
     *  @return  租賃影片總價
     *  @throws  MovieException
     * 沒有影片類型拋出異常
      */
       public   double  getCharge( int  movieCode,  int  days)  throws  MovieException   {
      double  result  =   0 ;
      //  普通片
       if  (movieCode  ==  Movie.REGULAR)
      //  單價為2
         {
     result  =   2 ;
      //  假如租賃天數(shù)大于2則,則優(yōu)惠
        if  (days  >   2 )   {
     result  +=  (days  -   2 )  *   1.5 ;
     }
      //  返回總價
       return  result;
     }
      //  最新發(fā)布片
        else   if  (movieCode  ==  Movie.NEW_RELEASE)   {


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 康平县| 荃湾区| 铜山县| 葫芦岛市| 南安市| 江源县| 周口市| 洛浦县| 松桃| 滨州市| 安远县| 清涧县| 二手房| 山东省| 咸丰县| 洛扎县| 绵竹市| 临泉县| 汉阴县| 若羌县| 湖南省| 南雄市| 玉龙| 高碑店市| 南充市| 积石山| 涞源县| 福安市| 项城市| 文成县| 大洼县| 石狮市| 呈贡县| 枣庄市| 康平县| 绵竹市| 梁河县| 奇台县| 昭通市| 奇台县| 攀枝花市|