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
☞5G套餐到底该不该换?看完你就明白啦!
☞ 他的公司1年令比特币暴跌数次,上榜福布斯捐10亿美元的跨界传奇☞日均350000亿接入量,腾讯TubeMQ性能超过Kafka