zoukankan      html  css  js  c++  java
  • 设计模式——简单说(策略模式)

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

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

    关键:妙计,锦囊, 使用

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

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

  • 相关阅读:
    DOM和XMLHttpRequest对象的属性和方法
    【代码版】今天,你的密码泄露了吗?
    使用Smarty的相关注意事项及访问变量的几种方式
    HttpWatch工具简介及使用技巧
    Smarty中的请求变量和保留变量的使用范例
    Linux管道操作
    发布mvc3报错:403.14Forbidden Web 服务器被配置为不列出此目录的内容
    仿Linux中的cp操作
    Fedora的ifconfig命令
    @ Register和@ Reference的区别
  • 原文地址:https://www.cnblogs.com/annkiny/p/12589431.html
Copyright © 2011-2022 走看看