巩义网站建设案例,wordpress壁纸主题下载失败,微信小程序官方教程,建设一个网站需要做哪些工作对于策略模式,我在很多面试题上看到过考察这一类的问题,这种模式也的确比较好用。 我感觉这种模式就是将不同实现的方法放到一个接口中,然后通过实现这个接口来实现不同的运行结果,这种模式有三部分构成: 策略接口 策略实现类 策略作用类(使用策略的类) 网络上的专业解释:此模式…对于策略模式,我在很多面试题上看到过考察这一类的问题,这种模式也的确比较好用。 我感觉这种模式就是将不同实现的方法放到一个接口中,然后通过实现这个接口来实现不同的运行结果,这种模式有三部分构成: 策略接口 策略实现类 策略作用类(使用策略的类) 网络上的专业解释:此模式下,一个类的行为或者其算法可以在运行时更改,我们要定义一系列的算法,把他们一个个封装起来,并使他们可以相互替换。实例:用此模式描述四则运算,可不断替换。以下是我对此实例做的类图:以下是我编写代码: 1.创建策略接口,用来存放四则运算计算器中的不同运行的方法//策略接口interface Strategy {int doAction(int num1,int num2);}2.创建实现策略接口的四则计算实现类public class AddStrategy implements Strategy {Overridepublic int doAction(int num1, int num2) {return num1num2;}}public class SubtractStrategy implements Strategy{Overridepublic int doAction(int num1, int num2) {return num1-num2;}}public class MultiplyStrategy implements Strategy {Overridepublic int doAction(int num1, int num2) {return num1*num2;}}public class DivisionStrategy implements Strategy {Overridepublic int doAction(int num1, int num2) {return num1/num2;}}3.创建一个使用某种策略的类,可以根据需求不同来使用不同的策略public class Calculator {private int num1;private int num2;public Calculator(int num1, int num2) {this.num1 num1;this.num2 num2;}public int operate(Strategy strategy){return strategy.doAction(num1, num2);}}4.创建测试类,使用不同的策略来实现需求public class Test {public static void main(String[] args) {System.out.println(加法计算器);Calculator calculatornew Calculator(1, 2);System.out.println(12calculator.operate(new AddStrategy()));System.out.println(减法计算器);Calculator calculator1new Calculator(10, 20);System.out.println(10-20calculator1.operate(new SubtractStrategy()));System.out.println(乘法计算器);Calculator calculator2new Calculator(3, 5);System.out.println(3*5calculator2.operate(new MultiplyStrategy()));System.out.println(除法计算器);Calculator calculator3new Calculator(10, 2);System.out.println(10/2calculator3.operate(new DivisionStrategy()));}}5.后台输出加法计算器123减法计算器10-20-10乘法计算器3*515除法计算器10/25看完代码之后,大家是不是感觉这种模式与状态模式是差不多的,是差不多,他俩原理都是用的覆盖嘛,但是状态模式的状态作用者里面要用到状态的实例对象,但是这个策略模式的策略使用者却是将策略当做参数来传入的,这样减少了对象的创建,提高了性能。这种模式的优点:1.如果我们要加一个相反数策略的话,只需要实现策略接口即可,体现了易扩展性,符合”开闭原则”。2.算法在客户端可以根据需要自由切换,适应了不同需求。3.在客户端使用将策略对象参数化的方法来调用具体策略的方法,避免在客户端新建对象实例,提高系统性能。缺点:1.策略使用类要知道所有的策略类才行,然后才能自行决定要用哪一个策略。2.随着策略的不断增多,策略类也会不断的增多,提高后期的维护困难性。