策略模式

原创
2016/03/25 15:27
阅读数 126

策略模式

定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户.

Context: 环境类。维护一个Strategy对象的引用,用一个ConcreteStrategy来配置。 

Strategy: 抽象策略类。定义所有支持算法的公共接口。Context使用这个接口来调用某个Concretestrategy定义的算法。 

ConcreteStrategy: 具体策略类。封装了具体的算法实现。

public abstract class Strategy {
    abstract void algorithm();
}
public class ConcreteStrategyA extends Strategy{
    public void algorithm() {
    }
}
public class ConcreteStrategyB extends Strategy{
    public void algorithm() {
    }
}
public class Context {
    private Strategy strategy;

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

    public void algorithm(){
        strategy.algorithm();
    }

    public Strategy getStrategy() {
        return strategy;
    }

    public void setStrategy(Strategy strategy) {
        this.strategy = strategy;
    }
}

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
1 收藏
1
分享
返回顶部
顶部