设计模式之策略模式

牧云@^-^@ 提交于 2019-12-01 16:03:28

策略模式(Strategy):他定义了算法家族,分别封装起来,让它们之间可以互相转换,此模式让算法的变化,不会影响到使用算法的客户。

 

 

package com.hztz.project.strategy;/** * @author huang * @date 2019/10/17 */abstract class Strategy {    /**     * 算法方法     */    public abstract void AlgorithmInterface();static class ConcreteStrategyA extends Strategy{    /**     * 算法A的实现     */    @Override    public void AlgorithmInterface() {        System.out.println("算法A的实现");    }}static class ConcreteStrategyB extends Strategy{    /**     * 算法B的实现     */    @Override    public void AlgorithmInterface() {        System.out.println("算法B的实现");    }}static class ConcreteStrategyC extends Strategy{    /**     * 算法C的实现     */    @Override    public void AlgorithmInterface() {        System.out.println("算法C的实现");    }}static class Context{    Strategy strategy;    public Context(Strategy strategy){        this.strategy = strategy;    }    public void ContextInterface(){        strategy.AlgorithmInterface();    }}    public static void main(String[] args) {        Context context;        context = new Context(new ConcreteStrategyA());        context.ContextInterface();        context = new Context(new ConcreteStrategyB());        context.ContextInterface();        context = new Context(new ConcreteStrategyC());        context.ContextInterface();    }}策略模式是定义了一系列算法的方法,所有算法完成的工作都是相同的,例如商场结算,只是实现不同,以相同的方式调用所有算法,减少了各种算法类与使用算法类之间的耦合。另外一个优点就是,策略模式简化了单元测试功能,因为每个算法都有自己的类,可以接自己的接口单独测试。策略模式就是用来封装算法的,
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!