《设计模式》之策略模式
程序员文章站
2023-11-14 09:09:52
策略模式 这里我举一个计算器的例子 我会创建一个计算接口,接口实现加法,减法这两个类,再创建一个计算器类(设置计算方法,返回值),最后创建一个test类测试 计算接口 接口实现加法,减法这两个类 再创建一个计算器类(设置计算方法,返回值) 最后创建一个test类测试 运行效果 设计模式的基本原则:开 ......
策略模式
这里我举一个计算器的例子
我会创建一个计算接口,接口实现加法,减法这两个类,再创建一个计算器类(设置计算方法,返回值),最后创建一个test类测试
计算接口
public interface operation { public int dooperation(int number1,int number2); }
接口实现加法,减法这两个类
public class operationadd implements operation { @override public int dooperation(int number1, int number2) { return number1+number2; } } public class operationsub implements operation { @override public int dooperation(int number1, int number2) { return number1-number2; } }
再创建一个计算器类(设置计算方法,返回值)
public class cal { private operation operation; public void setoperation(operation operation){ this.operation=operation; } public int dooperation(int number1,int number2){ return this.operation.dooperation(number1,number2); } }
最后创建一个test类测试
/** * @program:hope * @author:aodeng * @微信公众号:低调小熊猫 * @create:2018-11-08 20:40 **/ public class testcontroller { private static final logger log= loggerfactory.getlogger(testcontroller.class); public static void main(string[] args) { cal cal=new cal(); //使用加法 cal.setoperation(new operationadd()); //输出结果 log.info("[计算器加]-[{}]",cal.dooperation(4,2)); //使用减法 cal.setoperation(new operationsub()); //输出结果 log.info("[计算器减]-[{}]",cal.dooperation(4,2)); } }
运行效果
"c:\program files\java\jdk1.8\bin\java" com.hope.test.testcontroller 20:44:33.994 [main] info com.hope.test.testcontroller - [计算器加]-[6] 20:44:34.012 [main] info com.hope.test.testcontroller - [计算器减]-[2] process finished with exit code 0
设计模式的基本原则:开闭原则。
意思就是:对修改关闭、对扩展开放
我们的计算器算和接口算是修改关闭的了,如果要扩展其他算法,乘,除,只需要实现计算接口,然后调用计算器的setoption(new 扩展的接口)就行了,这样我们程序,扩展性就非常强大了。
以下是我看教程的时候的一段话,我直接copy过来一下(哥认为最后一句话是重点,圈起来):
优点
已经十分明显了,那就是遵循了开闭原则,扩展性良好。
缺点
随着你的策略增加,你的类也会越来越多。
所有的策略类都要暴露出去,所以如果你在实际开发中使用了策略模式,一定要记得写好文档让你的伙伴们知道已有哪些策略。就像 shiro 默认提供了三种验证策略,就必须在文档中写清楚,否则我们根本不知道如何使用。
当然,权衡利弊,跟优点比起来,这些缺点都不算事儿。 最后欢迎关注公众号:低调小熊猫
本文由低调小熊猫一文多发操作发布! 版权归:低调小熊猫所有,禁止转载