漫画:星球入侵之策略模式

百家 作者:程序人生 2019-11-20 10:46:42



作者 |?小小小咖
本文经授权转载自JAVA小咖秀(ID:javaxiaokashow)
比基盗星球还有2万公里将要到达我星球入侵。。。
此时的why星球



public?class?SimpleHero?{

????public?void?fight?(String condition) {
????????if?(condition ==?null?) {
????????????return;
????????}
????????if?("AgainstTheWind".equals(condition)) {
????????????System.out.println("逆风翻盘策略");

????????} else?if?("DownwindSuppression".equals(condition)) {
????????????System.out.println("顺风压制策略");

????????} else?if?("BalanceInPower".equals(condition)) {
????????????System.out.println("势均力敌策略");

????????}
????}

????public?static?void?main(String[] args) {
????????SimpleHero simpleHero = new?SimpleHero();
????????simpleHero.fight("AgainstTheWind");
????}
}




策略模式:定义一些算法族,分别封装,让他们可以相互替换,此模式让算法的变化独立于使用算法的客户。该设计模式属于行为型模式。


策略模式UML图:


public?interface?Strategy?{

????public?void?fight();
}

public?class?AgainstTheWindStrategy?implements?Strategy?{

????@Override
????public?void?fight()?{
????????System.out.println("逆风翻盘策略");
????}
}


public?class?BalanceInPowerStrategy?implements?Strategy?{

????@Override
????public?void?fight()?{
????????System.out.println("势均力敌策略");
????}
}


public?class?DownwindSuppressionStrategy?implements?Strategy?{

????@Override
????public?void?fight()?{
????????System.out.println("顺风压制策略");
????}
}


public?class?Hero?{

????private?Strategy strategy;

????public?Hero(Strategy strategy)?{
????????this.strategy = strategy;
????}

????public?void?useStrategem()?{
????????strategy.fight();
????}

}


public?class?Battlegroud?{

????public?static?void?main(String[] args)?{
????????Hero hero = new?Hero(new?AgainstTheWindStrategy());
????????hero.useStrategem();

????????Hero hero1 = new?Hero(new?BalanceInPowerStrategy());
????????hero1.useStrategem();

????????Hero hero2 = new?Hero(new?DownwindSuppressionStrategy());
????????hero2.useStrategem();

????}
}


tips :

策略模式优点:满足开闭原则,当新增策略时,只需要新增策略实现类,方便扩展,避免大量的if..else。

策略模式缺点:客户端需要知道所有的策略实现类,如果策略比较多的时候,类的数量也会比较多。


火爆技术人的中台是什么?如何搭建中台?如何选择?「中台战略」作者亲自为你一一揭秘!报名戳:https://edu.csdn.net/huiyiCourse/detail/1098

?热 文?推 荐?
?金山办公上市,雷军心愿了却!
?38年后的现在,用数据回顾女排精神!
??程序员正在消失?
?小米 9 年,雷军开启 AIoT 与 5G 超级互联网时代!

?5G套餐到底该不该换?看完你就明白啦!

?他的公司1年令比特币暴跌数次,上榜福布斯捐10亿美元的跨界传奇

?日均350000亿接入量,腾讯TubeMQ性能超过Kafka

你点的每个“在看”,我都认真当成了喜欢
程序员专属定制马克杯,买二送一,戳原文下单

关注公众号:拾黑(shiheibook)了解更多

[广告]赞助链接:

四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/

公众号 关注网络尖刀微信公众号
随时掌握互联网精彩
赞助链接