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

设计模式学习-策略模式

作者: 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