活到老,学到老

  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 阅读(341) 评论(0)  编辑  收藏 所属分类: 设计模式

只有注册用户登录后才能发表评论。


网站导航: