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

    策略模式


    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 }
  • 相关阅读:
    判断谷歌坐标是否在视野矩形内
    查看数据库中表占用空间
    Abp Create
    URL Rewrite Module Configuration Reference
    fiddler 使用
    ionic
    MySQL的安装与配置——详细教程
    Navicat 连接Mysql 8.0以上版本报错1251的详细解决方案
    简单的使用Navicat for MySQL
    navicat for mysql 中文破解版(无需激活码)
  • 原文地址:https://www.cnblogs.com/yadiel-cc/p/11831145.html
Copyright © 2011-2022 走看看