国内最全IT社区平台 联系我们 | 收藏本站
华晨云阿里云优惠2
您当前位置:首页 > php框架 > 框架设计 > 设计模式――策略模式

设计模式――策略模式

来源:程序员人生   发布时间:2015-03-13 08:14:56 阅读次数:3026次

场景设置

设计1个计算器,有+、-、*、/。

策略模式的主要思想在于,将所有的可供选择的算法封装,通过1个统1的容器传入予以调用。比如:
我有1个计算用的接口,往里面插入计算器,计算器中有加法器、减法器等等,这些就是策略,我把策略包装好,放入计算器进行调用,计算器再插入接口便可。
因此基于该模式的代码应以下:
计算接口:

interface Operation{ public int calculate(int a, int b); }

策略应当实现Strategy接口使得所有策略保持类型1致,并具有统1的调用方法:

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这个类,正所谓任何的变更都是需要本钱的。

生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠
程序员人生
------分隔线----------------------------
分享到:
------分隔线----------------------------
关闭
程序员人生