内容简介:个人博客:https://aodeng.cc微信公众号:低调小熊猫QQ群:756796932
版权声明
- 本文作者:低调小熊猫
- 本文链接: https://aodeng.cc/archives/pattern-yi
- 版权声明:本文采用 知识共享署名 4.0 国际许可协议 进行许可。转载-非商用-非衍生-保持署名,商业转载请联系作者本人qq:2696284032
单纯的广告
个人博客:https://aodeng.cc
微信公众号:低调小熊猫
QQ群:756796932
简介
写出可维护、可复用、可扩展及灵活的代码是我们的目的,也是学习 设计模式 的理由,这句话是他娘的复制的,为什么要学设计模式,设计模式是什么,还是去百度一下吧,我就不装13了,这只是我的学习笔记,非教程
这里我举一个计算器的例子
我会创建一个计算接口,接口实现加法,减法这两个类,再创建一个计算器类(设置计算方法,返回值),最后创建一个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 * @blog:低调小熊猫(https://aodeng.cc) * @微信公众号:低调小熊猫 * @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 默认提供了三种验证策略,就必须在文档中写清楚,否则我们根本不知道如何使用。
当然,权衡利弊,跟优点比起来,这些缺点都不算事儿。
源码
https://github.com/java-aodeng/hope
- 本文作者: 低调小熊猫
- 本文链接: https://aodeng.cc/archives/pattern-yi
- 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处!
以上所述就是小编给大家介绍的《经典设计模式(一):策略模式》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 设计模式——订阅模式(观察者模式)
- 设计模式-简单工厂、工厂方法模式、抽象工厂模式
- java23种设计模式-门面模式(外观模式)
- 设计模式-享元设计模式
- Java 设计模式之工厂方法模式与抽象工厂模式
- JAVA设计模式之模板方法模式和建造者模式
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
C语言程序设计现代方法
K. N. King / 人民邮电出版社 / 2007-11 / 55.00元
《C语言程序设计现代方法》最主要的一个目的就是通过一种“现代方法”来介绍C语言,实现客观评价C语言、强调标准化C语言、强调软件工程、不再强调“手工优化”、强调与c++语言的兼容性的目标。《C语言程序设计现代方法》分为C语言的基础特性。C语言的高级特性、C语言标准库和参考资料4个部分。每章都有“问与答”小节,给出一系列与本章内容相关的问题及其答案,此外还包含适量的习题。一起来看看 《C语言程序设计现代方法》 这本书的介绍吧!