• 【设计模式】策略模式


    策略模式


    2019-11-10  17:45:09  by冲冲

    1、概念

    策略模式(Strategy Pattern),创建多个不同的策略对象(实现同一个策略接口)一个使用策略(将策略对象注册为属性成员)的context对象

    本质:设计多个算法方案(它们实现同一个接口,具备可扩展性)。

    解决:取代if-else结构。

    2、完整代码

     1 //算法标准
     2 interface Calculate {
     3     public int calculate(int a, int b);//操作数,被操作数
     4 }
     5 
     6 //实现算法标准的加法
     7 class Addition implements Calculate{/
     8     @Override
     9     public int calculate(int a, int b) {//加数与被加数
    10         return a + b;//这里我们做加法运算
    11     }
    12 }
    13 
    14 //实现算法标准的减法
    15 class Subtraction implements Calculate{//实现算法接口
    16     @Override
    17     public int calculate(int a, int b) {//减数与被减数
    18         return a - b;//这里我们做减法运算
    19     }
    20 }
    21 
    22 //使用算法标准实现类的context类
    23 class Calculator {//计算器类
    24     private Calculate calculate;//拥有某种算法策
    25     public void setCalculator(Calculate calculate) {//接入算法策略
    26         this.calculate = calculate;
    27     }
    28     public int getResult(int a, int b){
    29         return this.calculate.calculate(a, b);//返回具体策略的结果
    30     }
    31 }
    32 
    33 public class Strategy {
    34     public static void main(String[] args) {
    35         Calculator calculator = new Calculator();//实例化计算器
    36         
    37         calculator.setCalculator(new Addition());//接入加法实现
    38         int result = calculator.getResult(1, 1);//计算
    39         System.out.println(result);//得到的是加法结果2
    40 
    41         calculator.setCalculator(new Subtraction());//接入减法实现
    42         result = calculator.getResult(1, 1);//计算
    43         System.out.println(result);//得到的是减法结果0
    44 
    45     }
    46 }
  • 相关阅读:
    软件设计项目进展18 2019/9/4
    软件设计项目进展17 2019/9/4
    软件设计项目进展16 2019/9/3
    将mcomaster配置以apache运行
    mcollective的web控制台---mcomaster搭建
    check_mk自定义监控增加性能数据图形展示
    check_mk自定义监控实践之powershell
    搭建puppet dashboard及遇到的问题
    通过MCollective实现puppet向windows的推送
    利用puppet管理配置IIS
  • 原文地址:https://www.cnblogs.com/yadiel-cc/p/11831145.html
Copyright © 2020-2023  润新知