码迷,mamicode.com
首页 > 其他好文 > 详细

【设计模式】策略模式

时间:2019-11-10 19:36:40      阅读:77      评论:0      收藏:0      [点我收藏+]

标签:不同的   else   his   print   运算   实现   rgs   static   style   

策略模式


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 }

 

 

【设计模式】策略模式

标签:不同的   else   his   print   运算   实现   rgs   static   style   

原文地址:https://www.cnblogs.com/yadiel-cc/p/11831145.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!