经典设计模式(一):策略模式

栏目: 后端 · 发布时间: 6年前

内容简介:个人博客:https://aodeng.cc微信公众号:低调小熊猫QQ群:756796932

版权声明

单纯的广告

个人博客: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


以上所述就是小编给大家介绍的《经典设计模式(一):策略模式》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

PHP程序设计

PHP程序设计

勒道夫 / 陈浩、胡丹、徐景 / 电子工业出版社 / 2009-3 / 80.00元

《PHP程序设计(第2版)》是最新版本PHP 5的权威指南,其中包含创建者PHP的创建者 Rasmus Lerdorf的独到的见解。《PHP程序设计(第2版)》以一种清晰而简练的风格介绍了PHP语言的语法和程序设计技术,并通过大量的示例演示了它们的正确使用方法和习惯用法。《PHP程序设计(第2版)》还给出了设计风格提示和实际的程序设计建议,这些将帮助你不仅成为一个PHP程序员,而且将是出色的PHP......一起来看看 《PHP程序设计》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具