黑马程序员浅谈设计模式-策略模式 下载本文

内容发布更新时间 : 2024/10/23 5:41:55星期一 下面是文章的全部内容请认真阅读。

【黑马程序员济南】策略设计模式

上一次我们聊了简单工厂模式,让大家了解到了如何使程序具备更高的解耦性,使每一个功能代码都独立出来,今天我们和大家聊一下另一种解耦的设计模式,它就是策略设计模式。 什么是策略设计模式:它定义了算法家族,分别封装起来,让他们之间可以项目替换,此模式让算法的变化,不会影响到算法的客户。我们可以这样理解,工厂模式是让我们内部的构造变得高内聚低耦合,而策略模式是让我们的内部代码和外部客户端代码不直接进行联系,而是通过一个桥梁来进行沟通,并且使相同算法或功能的代码进行封装。给大家用UML图进行展示一下: Context ConcreteStrategyA ConcreteStrategyB Strategy ConcreteStrategyC Context上下文,用一个 ConcreteStrategy来配置,具体策略类,封装了具体的算法或行为,继承Strategy 维护一个对Strategy 对象的引用

大家通过上方的UML图可以看出,策略设计模式的思想为封装算法类,通过一个上下文的类,来沟通客户端和服务器端的逻辑代码。给大家代码演示一下: /**

* 此类为抽象的基类,用于具体的代码来继承使用

黑马程序员济南中心 编著

* @authorzhe * */

publicabstractclassStragerySuper { }

具体的实现代码类: /**

*具体的算法实现代码A * **/

classConcreteAextendsStragerySuper{ }

黑马程序员济南中心 编著

//算法方法,用于具体的逻辑算法来实现 publicabstractvoidAlphInterfact();

@Override

publicvoidAlphInterfact() { }

System.out.print(\算法A的实现类\);

/**

*具体的算法实现代码B * **/

classConcreteBextendsStragerySuper{ } /**

*具体的算法实现代码C * **/

classConcreteCextendsStragerySuper{

@Override

publicvoidAlphInterfact() {

黑马程序员济南中心 编著

@Override

publicvoidAlphInterfact() { }

System.out.print(\算法B的实现类\);