0%

设计模式-策略模式

定义了算法家族,分别封装起来,让它们之间可以相互替换,此模式让算法的变化,不会影响到使用算法的客户。

类图

3JVQKS.md.png

实现

1
2
3
4
5
public interface Strategy {

public void behavior();

}
1
2
3
4
5
6
7
8
public class ConcreteStrategyA implements Strategy {

@Override
public void behavior() {
System.out.println("执行算法A...");
}

}
1
2
3
4
5
6
7
8
public class ConcreteStrategyB implements Strategy {

@Override
public void behavior() {
System.out.println("执行算法B...");
}

}
1
2
3
4
5
6
7
8
9
10
11
12
13
public class Context {

private Strategy strategy;

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

public void doSomething() {
strategy.behavior();
}

}
1
2
3
4
5
6
7
8
9
10
11
12
public class Client {

public static void main(String[] args) {
Context context = new Context();
context.setStrategy(new ConcreteStrategyA());
context.doSomething();

context.setStrategy(new ConcreteStrategyB());
context.doSomething();
}

}