策略模式
来源:互联网 发布:莱昂纳德14总决赛数据 编辑:程序博客网 时间:2024/06/06 21:45
策略模式
定义了算法家族,分别封装起来,让它们之间可以相互替换,此模式让算法的变化,不会影响到使用算法的客户(大话设计模式)。
策略模式UML图
public class Strategy { public static void main(String[] args) { UserStrategy userStrategy=new UserStrategy(new DetailStrategy1()); userStrategy.useStra(); UserStrategy userStrategy2=new UserStrategy(new DetailStrategy2()); userStrategy2.useStra(); }}interface StrategyInterface{ void action();}//具体的策略<离间计>class DetailStrategy1 implements StrategyInterface{ @Override public void action() { System.out.println("hi gay,给你个离间计"); }}//具体的策略<美男计>class DetailStrategy2 implements StrategyInterface{ @Override public void action() { System.out.println("hi gay,给你个美男计"); }}class UserStrategy{ private StrategyInterface strategyInterface; public UserStrategy(StrategyInterface strategyInterface) { this.strategyInterface = strategyInterface; } public void useStra(){ strategyInterface.action(); }}
策略模式适用场景
- 几个类的主要逻辑相同,只在部分逻辑的算法和行为上稍有区别的情况。
- 有几种相似的行为,或者说算法,客户端需要动态地决定使用哪一种,那么可以使用策略模式,将这些算法封装起来供客户端调用。
阅读全文