美文网首页
设计模式学习-策略模式

设计模式学习-策略模式

作者: most_xiaoya | 来源:发表于2018-10-31 22:16 被阅读0次

    一.定义:策略模式定义了算法族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。

    注:这里所说的算法并不是指“冒泡排序算法”、“搜索算法”之类的算法,它可以是一段代码、一个请求、一个业务操作。

    比如实现一个计算器功能,如图:

    图1

    实现代码如下:

    Operation接口:

    public interface Operation{   

        public  int doOperation(int num1,int  num2);

    }

    具体 实现类 加法和减法:

    public class   OperationAdd implements Operation{

        @override

        public  int doOperation(int num1,int  num2){

                return num1+num2;

         }    

       }

    public class   OperationSub implements Operation{

            @override

            public  int doOperation(int num1,int  num2){

                return num1-num2;

            }

     }

    计算器类:

    public class Calculator {

        private Operation operation;

        public void setOperation(Operation operation){

            this.operation = operation;

        }

        public int doOperation(int num1, int num2){

            return this.operation.doOperation(num1,num2);

        }

    }

    使用:

    Calculator calculator = new Calculator();

    calculator.setOperation(new OperationAdd());

    int result = calculator.doOperation(1,2);

    System.out.println(result);

    用了策略模式之后代码比普通写法多了一些,很好的体现了一个设计模式的基本原则:开闭原则。开闭原则说的是对修改关闭、对扩展开放。对修改关闭就是不希望别人修改我们的代码,此路不通,对扩展开放就是希望别人以扩展的方式增加功能,策略模式把开闭原则体现得淋漓尽致。


    最后总结下策略模式的优缺点

    优点:那就是遵循了开闭原则,扩展性良好。

    缺点:1.随着你的策略增加,你的类也会越来越多。  2.所有的策略类都要暴露出去,所以如果你在实际开发中使用了策略模式,一定要记得写好文档让你的伙伴们知道已有哪些策略,否则根本不知道如何使用。

    相关文章

      网友评论

          本文标题:设计模式学习-策略模式

          本文链接:https://www.haomeiwen.com/subject/meeatqtx.html