广州公司网站建设推广,wordpress ldap集成,为什么上传网站模板网站上没有文字和图片,长沙网站推广工具14.策略模式
策略模式作为一种软件设计模式#xff0c;指对象有某个行为#xff0c;但是在不同的场景中#xff0c;该行为有不同的实现算法。 策略模式把这些算法#xff0c;都抽取出来#xff0c;组成一个一个的类#xff0c;可以任意的替换#xff0c;大大降低了代码…14.策略模式
策略模式作为一种软件设计模式指对象有某个行为但是在不同的场景中该行为有不同的实现算法。 策略模式把这些算法都抽取出来组成一个一个的类可以任意的替换大大降低了代码的耦合度。 实现原理:将相同行为抽成一个接口(行为接口),定义方法,将具体实现定义实现类(算法类),在调用算法的方法中,用行为接口作为参数,调用方法.在实参传具体接口实现类(算法类),从而不同实现类,实现不同效果. 优点
算法多样性且具备自由切换功能有效避免多重条件判断增强了封装性简化了操作降低出错概率扩展性良好策略类遵顼里氏替换原则可以很方便地进行策略扩展
缺点
策略类数量增多且所有策略类都必须对外暴露以便客户端能进行选择 使用场景针对同一类型问题有多种处理方式每一种都能独立解决问题算法需要自由切换的场景需要屏蔽算法规则的场景 1、策略接口
public interface IStrategy {/***现在的运行状态*/void sportStatus();
}2、若干策略实现类 红灯
public class RedLight implements IStrategy {Overridepublic void sportStatus() {System.out.println(红灯停);}
}黄灯
public class YellowLight implements IStrategy {Overridepublic void sportStatus() {System.out.println(黄灯等待);}
}绿灯
public class GreenLight implements IStrategy {Overridepublic void sportStatus() {System.out.println(绿灯行);}
}3、策略上下文对象
AllArgsConstructor
NoArgsConstructor
Data
public class StrategyContext {private IStrategy iStrategy;public void contextMethod(){iStrategy.sportStatus();}}4、测试类
public class StrategyTest {public static void main(String[] args) {IStrategy yellowLight new YellowLight();StrategyContext strategyContext new StrategyContext(yellowLight);strategyContext.contextMethod();}
}