码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2020-03-28 22:00:20      阅读:89      评论:0      收藏:0      [点我收藏+]

标签:text   main   代理模式   das   增加   class   ide   方法   就是   

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

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

关键:妙计,锦囊, 使用

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

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、所有的策略接口要对外暴露(可以用工厂方法、代理模式或享元模式来修正)

 

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

标签:text   main   代理模式   das   增加   class   ide   方法   就是   

原文地址:https://www.cnblogs.com/annkiny/p/12589431.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!