这次我想谈谈策略设计模式 。 通过这种方式,我开始撰写有关行为设计模式的文章。 这些模式表示对象之间的某些交互模式,以使代码更灵活且组织得更好。此方法的最本质点是对象之间的松散耦合。
当您的应用程序中有多个实现目的的实现时,应使用该策略。 在这种情况下,您将创建策略接口,接口的具体实现以及最终一个上下文类,该上下文类将以某些方法封装所有逻辑。 为了理解这种方法,让我们看一个例子。
该示例将基于足球。 让我们想象一下,任何一支足球队都能以两种方式比赛:进攻和防守。 这两种策略是足球策略的特殊实现。
策略界面:
public interface FootballStrategy {
public void adhereTactic(String team);
}
具体实现:
public class AttackTactic implements FootballStrategy {
@Override
public void adhereTactic(String team) {
System.out.println(team+" will play in attacking football!");
}
}
和
public class DefenceTactic implements FootballStrategy {
@Override
public void adhereTactic(String team) {
System.out.println(team+" will make emphasis on defence!");
}
}
上下文类:
public class TacticContext {
private FootballStrategy strategy = null;
public void selectTactic(String team) {
strategy.adhereTactic(team);
}
public FootballStrategy getStrategy() {
return strategy;
}
public void setStrategy(FootballStrategy strategy) {
this.strategy = strategy;
}
}
演示策略用法:
...
public static void main(String[] args) {
String team1 = "Barcelona";
String team2 = "Real Madrid";
TacticContext context = new TacticContext();
context.setStrategy(new AttackTactic());
context.selectTactic(team1);
context.setStrategy(new DefenceTactic());
context.selectTactic(team2);
}
...
代码执行的结果:
巴塞罗那将踢足球!
皇马会强调防守!
何时使用策略设计模式? 绝对是当客户不需要了解具体策略的实施或那里使用的数据时。 当您要动态使用集合中的一个类时。 我不知道现在还需要提及哪些情况。 但是我确信我的例子很冗长,您可以对策略设计模式的优缺点做出自己的结论。
翻译自: https://www.javacodegeeks.com/2013/06/design-patterns-strategy.html