制作软件的网站,装饰工程设计东莞网站建设,龙岗区住房和建设局在线网站,wordpress 不显示图片在策略模式(Strategy Pattern)中#xff0c;一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。在策略模式中#xff0c;我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。介绍意… 在策略模式(Strategy Pattern)中一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。在策略模式中我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。介绍意图定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。主要解决在有多种算法相似的情况下使用 if…else 所带来的复杂和难以维护。何时使用一个系统有许多许多类而区分它们的只是他们直接的行为。如何解决将这些算法封装成一个一个的类任意地替换。关键代码实现同一个接口。应用实例 1、诸葛亮的锦囊妙计每一个锦囊就是一个策略。2、旅行的出游方式选择骑自行车、坐汽车每一种旅行方式都是一个策略。3、JAVA AWT 中的 LayoutManager。优点 1、算法可以自由切换。2、避免使用多重条件判断。3、扩展性良好。缺点1、策略类会增多。2、所有策略类都需要对外暴露。使用场景 1、如果在一个系统里面有许多类它们之间的区别仅在于它们的行为那么使用策略模式可以动态地让一个对象在许多行为中选择一种行为。2、一个系统需要动态地在几种算法中选择一种。3、如果一个对象有很多的行为如果不用恰当的模式这些行为就只好使用多重的条件选择语句来实现。注意事项如果一个系统的策略多于四个就需要考虑使用混合模式解决策略类膨胀的问题。实现我们将创建一个定义活动的 Strategy 接口和实现了 Strategy 接口的实体策略类。Context 是一个使用了某种策略的类。StrategyPatternDemo我们的演示类使用 Context 和策略对象来演示 Context 在它所配置或使用的策略改变时的行为变化。步骤 1创建一个接口。Strategy.javapublic interface Strategy {int doOperation(int num1, int num2);}步骤 2创建实现接口的实体类。OperationAdd.javapublic class OperationAdd implements Strategy {Overridepublic int doOperation(int num1, int num2) {return num1 num2; }}OperationSubstract.javapublic class OperationSubstract implements Strategy {Overridepublic int doOperation(int num1, int num2) {return num1 - num2; }}OperationMultiply.javapublic class OperationMultiply implements Strategy {Overridepublic int doOperation(int num1, int num2) {return num1 * num2; }}步骤 3创建 Context 类。Context.javapublic class Context {private Strategy strategy;public Context(Strategy strategy){this.strategy strategy; }public int executeStrategy(int num1, int num2){return strategy.doOperation(num1, num2); }}步骤 4使用 Context 来查看当它改变策略 Strategy 时的行为变化。StatePatternDemo.javapublic class StrategyPatternDemo {public static void main(String[] args) { Context context new Context(new OperationAdd()); System.out.println(10 5 context.executeStrategy(10, 5)); context new Context(new OperationSubstract()); System.out.println(10 - 5 context.executeStrategy(10, 5)); context new Context(new OperationMultiply()); System.out.println(10 * 5 context.executeStrategy(10, 5)); }}步骤 5验证输出。10 5 1510 - 5 510 * 5 50原文链接https://thinkwon.blog.csdn.net/article/details/101383647