zoukankan      html  css  js  c++  java
  • 吴裕雄--天生自然轻量级JAVA EE企业应用开发Struts2Sping4Hibernate整合开发学习笔记:企业应用开发的思考和策略_Strategy

    /**
     * Description:
     * <br/>网站: <a href="http://www.crazyit.org">疯狂Java联盟</a>
     * <br/>Copyright (C), 2001-2016, Yeeku.H.Lee
     * <br/>This program is protected by copyright laws.
     * <br/>Program Name:
     * <br/>Date:
     * @author  Yeeku.H.Lee kongyeeku@163.com
     * @version  1.0
     */
    public class DiscountContext
    {
        // 组合一个DiscountStrategy对象
        private DiscountStrategy strategy;
        // 构造器,传入一个DiscountStrategy对象
        public DiscountContext(DiscountStrategy strategy)
        {
            this.strategy  = strategy;
        }
        // 根据实际所使用的DiscountStrategy对象得到折扣价
        public double getDiscountPrice(double price)
        {
            // 如果strategy为null,系统自动选择OldDiscount类
            if (strategy == null)
            {
                strategy = new OldDiscount();
            }
            return this.strategy.getDiscount(price);
        }
        // 提供切换算法的方法
        public void changeDiscount(DiscountStrategy strategy)
        {
            this.strategy = strategy;
        }
    }
    /**
     * Description:
     * <br/>网站: <a href="http://www.crazyit.org">疯狂Java联盟</a>
     * <br/>Copyright (C), 2001-2016, Yeeku.H.Lee
     * <br/>This program is protected by copyright laws.
     * <br/>Program Name:
     * <br/>Date:
     * @author  Yeeku.H.Lee kongyeeku@163.com
     * @version  1.0
     */
    public interface DiscountStrategy
    {
    	// 定义一个用于计算打折价的方法
    	double getDiscount(double originPrice);
    }
    

      

    /**
     * Description:
     * <br/>网站: <a href="http://www.crazyit.org">疯狂Java联盟</a>
     * <br/>Copyright (C), 2001-2016, Yeeku.H.Lee
     * <br/>This program is protected by copyright laws.
     * <br/>Program Name:
     * <br/>Date:
     * @author  Yeeku.H.Lee kongyeeku@163.com
     * @version  1.0
     */
    public class OldDiscount
    	implements DiscountStrategy
    {
    	// 重写getDiscount()方法,提供旧书打折算法
    	public double getDiscount(double originPrice)
    	{
    		System.out.println("使用旧书折扣...");
    		return originPrice * 0.7;
    	}
    }
    

      

    /**
     * Description:
     * <br/>网站: <a href="http://www.crazyit.org">疯狂Java联盟</a>
     * <br/>Copyright (C), 2001-2016, Yeeku.H.Lee
     * <br/>This program is protected by copyright laws.
     * <br/>Program Name:
     * <br/>Date:
     * @author  Yeeku.H.Lee kongyeeku@163.com
     * @version  1.0
     */
    public class OldDiscount
    	implements DiscountStrategy
    {
    	// 重写getDiscount()方法,提供旧书打折算法
    	public double getDiscount(double originPrice)
    	{
    		System.out.println("使用旧书折扣...");
    		return originPrice * 0.7;
    	}
    }
    

      

    /**
     * Description:
     * <br/>网站: <a href="http://www.crazyit.org">疯狂Java联盟</a>
     * <br/>Copyright (C), 2001-2016, Yeeku.H.Lee
     * <br/>This program is protected by copyright laws.
     * <br/>Program Name:
     * <br/>Date:
     * @author  Yeeku.H.Lee kongyeeku@163.com
     * @version  1.0
     */
    public class StrategyTest
    {
    	public static void main(String[] args)
    	{
    		// 客户端没有选择打折策略类
    		DiscountContext dc = new DiscountContext(null);
    		double price1 = 79;
    		// 使用默认的打折策略
    		System.out.println("99元的书默认打折后的价格是:"
    			+ dc.getDiscountPrice(price1));
    		// 客户端选择合适的VIP打折策略
    		dc.changeDiscount(new VipDiscount());
    		double price2 = 89;
    		// 使用VIP打折得到打折价格
    		System.out.println("109元的书对VIP用户的价格是:"
    			+ dc.getDiscountPrice(price2));
    	}
    }
    

      

    /**
     * Description:
     * <br/>网站: <a href="http://www.crazyit.org">疯狂Java联盟</a>
     * <br/>Copyright (C), 2001-2016, Yeeku.H.Lee
     * <br/>This program is protected by copyright laws.
     * <br/>Program Name:
     * <br/>Date:
     * @author  Yeeku.H.Lee kongyeeku@163.com
     * @version  1.0
     */
    // 实现DiscountStrategy接口,实现对VIP打折的算法
    public class VipDiscount
    	implements DiscountStrategy
    {
    	// 重写getDiscount()方法,提供VIP打折算法
    	public double getDiscount(double originPrice)
    	{
    		System.out.println("使用VIP折扣...");
    		return originPrice * 0.5;
    	}
    }
    

      

  • 相关阅读:
    关于开源的RTP——jrtplib的使用
    常见hash算法的原理
    cocos2dx触屏响应(单点触摸)CCTouchBegan,CCTouchMove,CCTouchEnd
    SD卡中FAT32文件格式高速入门(图文具体介绍)
    HDU 4916 树形dp
    图像识别技术
    shell语法简单介绍
    MATLAB新手教程
    java堆栈 (转)
    给字符数组赋值的方法
  • 原文地址:https://www.cnblogs.com/tszr/p/12376575.html
Copyright © 2011-2022 走看看