设计模式:策略

这次我想谈谈策略设计模式 。 通过这种方式,我开始撰写有关行为设计模式的文章。 这些模式表示对象之间的某些交互模式,以使代码更灵活且组织得更好。此方法的最本质点是对象之间的松散耦合。

当您的应用程序中有多个实现目的的实现时,应使用该策略。 在这种情况下,您将创建策略接口,接口的具体实现以及最终一个上下文类,该上下文类将以某些方法封装所有逻辑。 为了理解这种方法,让我们看一个例子。

该示例将基于足球。 让我们想象一下,任何一支足球队都能以两种方式比赛:进攻和防守。 这两种策略是足球策略的特殊实现。

策略设计模式

策略界面:

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);

	}
...

代码执行的结果:

巴塞罗那将踢足球!
皇马会强调防守!

何时使用策略设计模式? 绝对是当客户不需要了解具体策略的实施或那里使用的数据时。 当您要动态使用集合中的一个类时。 我不知道现在还需要提及哪些情况。 但是我确信我的例子很冗长,您可以对策略设计模式的优缺点做出自己的结论。

参考: 设计模式: JCG合作伙伴 Alexey Zvolinskiy的策略,来自Fruzenshtein的注释博客。

翻译自: https://www.javacodegeeks.com/2013/06/design-patterns-strategy.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值