zoukankan      html  css  js  c++  java
  • 设计模式-策略模式

    折扣策略接口

    public interface DiscountStrategy {
        /**
         * 计算价格
         */
        public double calcPrice(double booksPrice);
    }
    

    普通会员折扣

    public class NormalStrategy implements DiscountStrategy {
    
        @Override
        public double calcPrice(double price) {
            System.out.println("普通会员的没有折扣");
            return price;
        }
    }
    

    中级会员折扣

    public class MiddleStrategy implements DiscountStrategy {
    
        @Override
        public double calcPrice(double price) {
            System.out.println("中级会员9折");
            return price * 0.9;
        }
    }
    

    高级会员折扣

    public class HighStrategy implements DiscountStrategy {
    
        @Override
        public double calcPrice(double price) {
            System.out.println("高级会员8折");
            return price * 0.8;
        }
    }
    

    价格类

    public class Price {
        //持有一个具体的策略对象
        private Strategy strategy;
        /**
         * 构造函数,传入一个具体的策略对象
         * @param strategy    具体的策略对象
         */
        public Price(Strategy strategy){
            this.strategy = strategy;
        }
        
        /**
         * 计算价格
         */
        public double getFinalPrice(double price){
            return this.strategy.calcPrice(price);
        }
    }
    

    场景类

    public class Client {
    
        public static void main(String[] args) {
            //选择并创建需要使用的策略对象
            Strategy strategy = new MiddleStrategy();
            //创建环境
            Price price = new Price(strategy);
            //计算价格
            double finalPrice = price.getFinalPrice(300);
            System.out.println("最终价格为:" + finalPrice);
        }
    }
    
  • 相关阅读:
    href="#" 是什么意思?
    JavaScript匿名自执行函数~function(){}
    var $this = $(this)是什么意思?
    .Ajax
    myeclipse 的Customize Perspective 没有反应
    JS中的this指向问题
    JS中$含义和用法
    JS中sessionstorage的getItem/setItem/removeItem/clear
    JS中的top是什么?
    CAD常用命令大全
  • 原文地址:https://www.cnblogs.com/umgsai/p/6094769.html
Copyright © 2011-2022 走看看