zoukankan      html  css  js  c++  java
  • 无废话设计模式(13)行为型模式--策略模式

    0-前言

      策略模式定义:定义了算法家族,分别封装起来,让他们之间可以相互替换,

                此模式让算法的变化,不会影响到使用算法的客户;

    1-实现

    1-1、简单UML图:

    1-2、代码实现:

    //1、抽象父类
    abstract  class Discount
    {
        abstract double GetDiscount();
    }
    
    //2-1、具体算法A
    class  DiscountA extends Discount
    {
        @Override
        double GetDiscount()
        {
            return 5;
        }
    }
    
    //2-2、具体算法B
    class  DiscountB extends Discount
    {
        @Override
        double GetDiscount()
        {
            return 10;
        }
    }
    
    //3、上下文类
    class  DiscountContext
    {
        Discount discount;
        public DiscountContext(int type)
        {
            switch (type)
            {
                case 1:
                     this.discount = new DiscountA();
                     break;
                case 2:
                    this.discount = new DiscountB();
                    break;
                    default:
                        this.discount = new DiscountA();
                        break;
            }
    
        }
    
        public  double getAllDicount()
        {
           return discount.GetDiscount();
        }
    }

    客户端:

            double discount;
            DiscountContext discountContext;
             discountContext = new DiscountContext(1);
            discount = discountContext.getAllDicount();
            System.out.println("算法A下,你当前可以享受的优惠金额为:" + discount);
    
            discountContext = new DiscountContext(2);
            discount = discountContext.getAllDicount();
            System.out.println("算法B下,你当前可以享受的优惠金额为:" + discount);

    运行结果:

    2-应用场景简单总结

    1、很多相关类(算法)只是在行为上有差异;

    2、当需要使用一个算法的不同变体时;

    3、使用算法的用户不应只算法的具体结构时;

  • 相关阅读:
    java上传1t文件
    上传1T文件
    超过20g的文件+上传
    文件批量下载
    下载超大文件的控件
    Java上传大文件夹
    Java超大文件上传解决办法
    vue+大文件上传控件
    cocos2dx3.1 win7安装步骤及编译到安桌
    Muller’s method (website)
  • 原文地址:https://www.cnblogs.com/yanghj/p/13427928.html
Copyright © 2011-2022 走看看