本文经授权转载自 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
你点的每个“在看”,我都认真当成了喜欢 程序员专属定制马克杯,买二送一,戳原文下单