1.用意
针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。用一句话来说,就是:“准备一组算法,并将每一个算法封装起来,使得它们可以互换。”
2.类图

3.代码
/*
* 环境角色
*/
public class Context {
private Strategy strategy;
//策略方法
public void contextInterface() {
strategy.strategyInterface();
}
public void setStrategy(Strategy s) {
this.strategy = s;
}
}
/*
* 抽象策略类
*/
public abstract class Strategy {
public abstract void strategyInterface();
}
/*
* 具体策略类
*/
public class ConcreteStrategy extends Strategy {
public void strategyInterface() {
S.s("my algorithm...");
}
}
/*
* 测试类
*/
public class Test {
public static void main(String[] args) {
Context c = new Context();
c.setStrategy(new ConcreteStrategy());
c.contextInterface();
}
}
z
本文介绍了一种设计模式——策略模式,该模式允许在运行时选择算法并进行替换,从而实现算法的独立性和灵活性。通过示例代码展示了环境角色、抽象策略类及具体策略类的实现方式。
1847

被折叠的 条评论
为什么被折叠?



