java 策略模式

//调用者
public class StrategyDemo {

    public static void main(String[] args) {
        //动态的选择某一种算法策略
        Context context1 = new Context(new OperationStrategy1());
        context1.executeStrategy();
        Context context2 = new Context(new OperationStrategy2());
        context2.executeStrategy();
    }
}

//策略接口
interface Strategy {

    void operate();
}

//策略具体算法实现
class OperationStrategy1 implements Strategy {

    @Override
    public void operate() {
        System.out.println("operation1");
    }
}


class OperationStrategy2 implements Strategy {

    @Override
    public void operate() {
        System.out.println("operation2");
    }
}

//使用了某种策略的类。
class Context {

    private Strategy strategy;

    public Context(Strategy strategy) {
        this.strategy = strategy;

    }

    public void executeStrategy() {
        strategy.operate();
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在阎宏博士的《Java与模式》一书中开头是这样描述策略(Strategy)模式的:策略模式属于对象的行为模式。其用...
    今晚打肉山阅读 348评论 0 0
  • 创建一个能够根据所传递的参数对象的不同而具有不同行为的方法 要执行的算法固定不变,封装到一个类(Context)中...
    北冥冰皇阅读 461评论 0 0
  • 策略模式 将类中未来可能会变化的需求抽取为接口,而在这个类中持有那个接口的引用,编程时使用接口,而不是那个接口的实...
    _ERROR阅读 2,355评论 0 3
  • 其他设计模式java单例模式java建造者模式java策略模式java代理模式java观察者模式java适配器模式...
    zhuzhiqiang00阅读 3,371评论 0 4
  • 关于策略模式,可以简单的认为,将一段算法操作,抽取出来,通过接口的形式进行声明,然后在各自的子类写出各自的实现,这...
    草丛伦阅读 230评论 0 2