设计模式策略模式

Posted yadiel-cc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式策略模式相关的知识,希望对你有一定的参考价值。

策略模式


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 }

 

 

以上是关于设计模式策略模式的主要内容,如果未能解决你的问题,请参考以下文章

Redis实现分布式锁(设计模式应用实战)

设计模式策略模式 ( 简介 | 适用场景 | 优缺点 | 代码示例 )

代码片-策略模式+工厂模式

代码片-策略模式+工厂模式

代码片-策略模式+工厂模式

代码片-策略模式+工厂模式