美文网首页JAVAJava 设计模式程序员
Java设计模式 - 策略模式

Java设计模式 - 策略模式

作者: a57ecf3aaaf2 | 来源:发表于2017-12-25 11:44 被阅读606次

定义

策略模式是设计模式之中相对比较简单的一种模式,其解决的就是大量使用 if...else...、switch...case... 这样的结构导致的代码臃肿的问题。

来看看策略模式的定义:

策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户端而独立变化。

实现

首先定义一个基类,用于表示策略的接口:

public interface Operator {
    void operate();
}

下面是两个具体的实现类,也就是具体的策略:

public class Operator1 implements Operator {

    @Override
    public void operate() {
        System.out.println("operate 1...");
    }
}
public class Operator2 implements Operator {
    @Override
    public void operate() {
        System.out.println("operate 2...");
    }
}

策略模式一般与工厂方法模式结合使用,来达到最佳效果:

public final class OperatorFactory {

    public static Operator operator(int code) {
        switch (code) {
            case 0:
                return new Operator1();

            default:
                return new Operator2();
        }
    }
}

如果在客户端中使用 switch...case... 结构把所有的实现策略都写在同一个方法中,势必引起代码冗余:

public class Client {

    public static void main(String[] args) {
        switch (Integer.valueOf(args[0])) {
            case 0:
                // operate...
                break;

            case 1:
                // operate...
                break;

            case 2:
                // operate...
                break;

            default:
                // operate...
                break;
        }
    }
}

如果结合策略模式和工厂方法模式,使用下面的代码,就会使得代码更加清晰,符合单一职责原则,同时,客户端不用关心具体的策略的执行细节,只需关心自己需要传入的值即可。

public class Client {

    public static void main(String[] args) {
        OperatorFactory.operator(Integer.valueOf(args[0])).operate();
    }
}

总结

策略模式主要用来分离算法,根据相同的行为抽象来做不同的具体策略实现。通过以上也可以看出策略模式的优缺点:

优点:

  • 结构清晰明了、使用简单直观。
  • 耦合度相对而言较低,扩展方便。
  • 操作封装也更为彻底,数据更为安全。

缺点:

  • 随着策略的增加,子类也会变得繁多。

本文由 Fynn_ 原创,未经许可,不得转载!

相关文章

  • java建造者模式

    其他设计模式java单例模式java建造者模式java策略模式java代理模式java观察者模式java适配器模式...

  • java单例模式

    其他设计模式java单例模式java建造者模式java策略模式java代理模式java观察者模式java适配器模式...

  • java外观模式

    其他设计模式java单例模式java建造者模式java策略模式java代理模式java观察者模式java适配器模式...

  • java适配器模式

    其他设计模式java单例模式java建造者模式java策略模式java代理模式java观察者模式java适配器模式...

  • java观察者模式

    其他设计模式java单例模式java建造者模式java策略模式java代理模式java观察者模式java适配器模式...

  • java代理模式

    其他设计模式java单例模式java建造者模式java策略模式java代理模式java观察者模式java适配器模式...

  • java策略模式

    其他设计模式java单例模式java建造者模式java策略模式java代理模式java观察者模式java适配器模式...

  • Java 常用设计模式简例

    简述Java常用设计模式 简述Java常用设计模式及设计原则 strate---------策略模式针对接口编程,...

  • 策略模式

    参考资料:漫话:如何给女朋友解释什么是策略模式? 设计模式之策略模式(实例+Demo) Java设计模式(8)——...

  • 学习Head First设计模式Day1

    Java设计模式之设计模式 策略模式:策略模式定义了算法簇,分别封装起来,让他们之间可以互相替换,此设计模式让算法...

网友评论

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

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