使用state pattern替代if else

其实我不那样

其实我不那样

2016-02-19 19:12

今天图老师小编给大家展示的是使用state pattern替代if else,精心挑选的内容希望大家多多支持、多多分享,喜欢就赶紧get哦!

        大多数开发人员现在还在使用if else的过程结构,曾看过jdon的banq大哥写的一篇文章,利用command,aop模式替代if else过程结构。当时还不太明白,这几天看了《重构》第一章的影片租赁案例,感慨颇深。下面我来谈一谈为什么要用state pattern替代if else,替代if else有什么好处,以及给出具体代码怎么替代if else。本文参考jdon的“你还在使用if else吗?”及《重构》第一章。
   

  首先我们模拟影片租赁过程,顾客租凭影片,影片分为儿童片、普通片、新片。根据影片类型及租凭天数价格各不相同(优惠程度不同),用户累计积分不同。

   

  OK ,现在我们使用 if else 表示。

   

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

  
   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   {

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

        //  普通片标识
         public   static   int  REGULAR  =   1 ;
     
        //  新片标识
         public   static   int  NEW_RELEASE  =   2 ;
     
        //  儿童片标识
         public   static   int  CHILDREN  =   3 ;
     
        /** */ /**
       * 获取租赁影片总价
       *
       *  @param  movieCode
       * 影片类型
       *  @param  days
       * 租凭天数
       *  @return  租赁影片总价
       *  @throws  MovieException
       * 没有影片类型抛出异常
        */
         public   double  getCharge( int  movieCode,  int  days)  throws  MovieException   {
        double  result  =   0 ;
        //  普通片
         if  (movieCode  ==  Movie.REGULAR)
        //  单价为2
           {
       result  =   2 ;
        //  假如租赁天数大于2则,则优惠
          if  (days     2 )   {
       result  +=  (days  -   2 )  *   1.5 ;
       }
        //  返回总价
         return  result;
       }
        //  最新发布片
          else   if  (movieCode  ==  Movie.NEW_RELEASE)   {
  

展开更多 50%)
分享

猜你喜欢

使用state pattern替代if else

编程语言 网络编程
使用state pattern替代if else

STATE OF THE OBVIOUS设计欣赏

美术设计
STATE OF THE OBVIOUS设计欣赏

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

设计模式之State

编程语言 网络编程
设计模式之State

Search Engine Optimization - Moving View State to the bottom

Web开发
Search Engine Optimization - Moving View State to the bottom

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

State Street蜂蜜包装设计

包装设计 名片设计 名片设计素材 画册设计
State Street蜂蜜包装设计

Creative State办公创意空间设计

室内设计
Creative State办公创意空间设计

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

C语言中的面向对象(4)-面向对象思想

C语言中的面向对象(4)-面向对象思想

Win10手机预览版10166快速版开始推送

Win10手机预览版10166快速版开始推送
下拉加载更多内容 ↓