设计模式——简单说(策略模式)

Posted annkiny

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式——简单说(策略模式)相关的知识,希望对你有一定的参考价值。

策略模式其实很好理解,我们讲一个通俗易懂的举例。

三国时期,诸葛亮是个高人,可以给一些锦囊妙计,让某人在特定的时候打开使用。

关键:妙计,锦囊, 使用

妙计共有的特点就是可以打开看,定义一个接口。

public interface IStrategy {
    void operate();
}

接下来可以可以装妙计了,来2个妙计

public class StrategyOne implements IStrategy {

    @Override
    public void operate() {
         System.out.println("妙计1:今天不要出门。");
    }

}

public class StrategyTwo implements IStrategy {

    @Override
    public void operate() {
        System.out.println("妙计2:出门记得带上口罩。");
     //实际的运用中,这里可能是非常复杂的算法 } }

有了2个妙计了,我们就放在一个地方吧——锦囊

public class Context {
     private IStrategy strategy;
     public Context(IStrategy strategy) {
         this.strategy = strategy;
     }
     
     public void operate() {
         this.strategy.operate();
     }
}

接下来让阿斗来获得并使用妙计

public class Adou {

    public static void main(String[] args) {
        Context context;
        System.out.println("我拿到第一个妙计了,迅速打开查看:");
        // 拿到第一个妙计
        context = new Context(new StrategyOne());
        // 看看妙计
        context.operate();
        System.out.println("第一个妙计可能不行,找到第二个妙计查看:");
        // 拿到第二个妙计
        context = new Context(new StrategyTwo());
        context.operate();
    }

}
运行结果:
我拿到第一个妙计了,迅速打开查看: 妙计1:今天不要出门。 第一个妙计可能不行,找到第二个妙计查看: 妙计2:出门记得带上口罩。

 

策略模式的优点:

1、算法自由切换

2、避免使用多重条件判断

3、扩展性好

缺点:

1、类的数量增加

2、所有的策略接口要对外暴露(可以用工厂方法、代理模式或享元模式来修正)

 

以上是关于设计模式——简单说(策略模式)的主要内容,如果未能解决你的问题,请参考以下文章

设计模式之策略模式&简单工厂模式

设计模式之策略模式&简单工厂模式

Java 策略模式

Java 策略模式

Java 策略模式

Java 策略模式