关于设计模式:抽丝剥茧策略设计模式

51次阅读

共计 1247 个字符,预计需要花费 4 分钟才能阅读完成。

策略设计模式

哈喽,兄弟们好。明天咱们来聊一下策略设计模式。

兄弟们有没有写过这样的代码呢?

if(){}else if(){}else if(){}else if(){}else if(){}else{}

这样的代码往往在业务中的体现是:依据用户不同的身份进行特定的解决,不过随着零碎的不断扩大,会导致代码变得越来越臃肿。所以咱们须要学习以下策略模式来解决这样的问题。

咱们来看一下策略模式做了什么?

策略模式最次要的特点是:将要执行的策略传入,体现在 Java 中就是传入一个接口的实现类,而后调用这个接口的办法,执行策略

咱们以下面的案例为背景进行解说:假如当初要进行不同语言的打印输出成果

传统办法:if,else判断传入的是什么语言,依据判断后果输入不同的成果

策略模式:传入不同语言要执行的打印代码。比方,如果是 Java 则传入一个 IPrintInteface 的实现作为要执行的动作。

咱们代码解释一下:

public class StrategyDesgin {public static void main(String[] args) {Java java = new Java();
        // 将咱们须要做的行为传入
        test(java);
    }

    public static void test(IPrintInterface printInterface){printInterface.print();
    }
}


class Java implements IPrintInterface{

    @Override
    public void print() {System.out.println("Java 输入");
    }
}

class C implements IPrintInterface{

    @Override
    public void print() {System.out.println("C 输入");
    }
}

class JavaScript implements IPrintInterface{

    @Override
    public void print() {System.out.println("JavaScript 输入");
    }
}

interface IPrintInterface{void print();
}

咱们后面聊过 JDK1.8 提供的 Lambda 表达式,它为咱们书写策略模式提供了非常简单的写法,咱们依然以上述的场景为例,看一下代码实现。

public class StrategyDesgin {public static void main(String[] args) {test(()-> System.out.println("Java 输入"));
    }

    public static void test(IPrintInterface printInterface){printInterface.print();
    }
}

interface IPrintInterface{void print();
}

咱们来总结一下:策略模式所做的事件就是将咱们须要执行的行为传给函数,而后让函数执行,防止抉择判断的过程。这就是策略设计模式的全部内容了。

正文完
 0