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

    一 . 概述

    策略设计模式就是将功能的实现抽离出来,形成统一的接口.

    提供一个统一的接口参数方法.


    二 . 代码实现

    这里用一个交税的例子说明一下.

    [1] 策略接口

    public interface CalculateTax {
        //一个统一的接口,方法的入参分别为工资和奖金
        double calculate(double salary , double bouns);
    }

    [2] 策略的实现

    //一个简单的计算方式
    public class SimpleStrategy implements CalculateTax{
        
        private static final double salary_ratio = 0.1d ; 
        private static final double bouns_ratio = 0.2d ; 
        //现在的计算方式
        public double calculate(double salary, double bouns) {
            return salary * salary_ratio + bouns * bouns_ratio;
        }
        
    }

    [3]调用处

    //税务计算器
    public class TaxCalculator {
        
        //计算税务
        //方法的参数需要一个策略的传入
        public static double countTax(double salary , double bouns ,CalculateTax strategy) {
            return strategy.calculate(salary, bouns);
        }
        
    }

    [4]测试

    public class TestClass {
        
        public static void main(String[] args) {
            System.out.println(TaxCalculator.countTax(1000, 1000, new SimpleStrategy()));
        }
    }

    三 . 说明 

    (1)设计模式的核心有两处

        [1] 策略接口

        [2]调用处使用接口(抽象类型)

    (2)好处: 当我们的策略发生变化的时候,我们可以使用一致性的方式进行编程.

    (3)当我们使用spring这样的框架的时候,我们就可以使用配置的方式进行处理.

      也就是说我们需要修改的时候,只需要创建一个新的类,然后修改配置就能完成.

  • 相关阅读:
    spring aop 之链式调用
    Java中的java.lang.Class API 详解
    Java 内省(Introspector)和 BeanUtils
    Small Spring系列一:BeanFactory(一)
    (C#) 多线程访问探讨,如果保证线程安全?
    (C#) 多线程访问int, bool 等值类型变量
    (WCF) 利用WCF实现两个Process之间的通讯。
    (PowerShell) 重命名文件
    JavaScript : Array assignment creates reference not copy
    (C#) 表达式树
  • 原文地址:https://www.cnblogs.com/trekxu/p/8969279.html
Copyright © 2011-2022 走看看