设计模式——策略模式
来源:互联网 发布:温州网络作家协会 编辑:程序博客网 时间:2024/06/10 21:58
场景设置
设计一个计算器,有+、-、*、/。
策略模式的主要思想在于,将所有的可供选择的算法封装,通过一个统一的容器传入予以调用。比如:
我有一个计算用的接口,往里面插入计算器,计算器中有加法器、减法器等等,这些就是策略,我把策略包装好,放入计算器进行调用,计算器再插入接口即可。
因此基于该模式的代码应如下:
计算接口:
interface Operation{ public int calculate(int a, int b);}
策略应该实现Strategy
接口使得所有策略保持类型一致,并拥有统一的调用方法:
class AddStrategy implements Strategy{ @Override public int operate(int a, int b) { return a+b; }}class MinusStrategy implements Strategy{ @Override public int operate(int a, int b) { return a-b; }}
计算器应该实现Operation
接口,用来执行calculate
:
class Calculator implements Operation{ private Strategy strategy = null; public void setStrategy(String tag){ if(tag.equals("+")){ strategy = new AddStrategy(); } if(tag.equals("-")){ strategy = new MinusStrategy(); } } @Override public int calculate(int a, int b) { return strategy.operate(a,b); }}
最后,调用计算器可如下编写:
public static void main(String[] args){ Calculator calculator = new Calculator(); calculator.setStrategy("+"); calculator.calculate(1,2); }
策略模式就是用来封装算法的,实践中可以用它来封装几乎任何类型的规则,只要在分析过程中听到需要在不同时间应用不同的业务规则,就可以考虑使用策略模式处理这种变化的可能性。
在基本的策略模式中,选择所用具体实现的职责由客户端对象承担,并传给策略模式的Calculate
对象。
但是,对于策略的增加和修改,还是需要修改Calculate这个类,正所谓任何的变更都是需要成本的。
0 0
- 设计模式—策略模式
- 设计模式—策略模式
- 设计模式—策略模式
- 设计模式—策略模式
- 设计模式—策略模式
- 设计模式—策略模式
- 设计模式—策略模式
- 设计模式—策略模式
- 设计模式—策略模式
- 设计模式—策略模式
- 设计模式—策略模式
- 设计模式—策略模式
- 设计模式——策略设计模式
- Java设计模式—策略
- 设计模式——策略模式
- 设计模式——策略模式
- 每日设计模式——策略模式
- 设计模式——策略、代理模式
- 如何获取Android唯一标识(唯一序列号)
- BZOJ 3890 Usaco2015 Jan Meeting Time 拓扑排序
- 概率论基础
- Ubuntu14.04编译Allwinner lichee 两个出错解决方法
- Java设计模式——策略模式
- 设计模式——策略模式
- C++ stl list的用法
- 腾讯基于戴尔设备搭建高可用的ERP系统
- MongoDB数据文件备份与恢复
- WPF XAML概览
- 火狐打开本地bootstrap页面,小图标无法正常显示问题
- 策略模式----商场促销--Python版
- “INPUT FILE”文件属性及HTML对象属性遍历
- poj 2001 Shortest Prefixes Trie