一、我的理解
策略模式讲究为某个类的对象提供不同的初始化参数(策略),那么它在执行某一动作时会采用不同的方法(初始化参数中实现的实际方法体)
二、实现方式
面向接口编程,为某个类初始化时提供不同的实现了相同接口的类的实例对象,该类实际执行动作时执行的是初始化参数中实际实现的方法体
三、实例
Java实例
Strategy接口:策略的抽象接口,统一策略的执行方法入口
package com.study.dp.strategy;
public interface Strategy {
public int doOperation(int num1, int num2);
}
OperationAdd类:实际实现的策略一,加法
package com.study.dp.strategy;
public class OperationAdd implements Strategy {
@Override
public int doOperation(int num1, int num2) {
return num1+num2;
}
}
OperationSubstract类:实际实现的策略二,减法
package com.study.dp.strategy;
public class OperationSubstract implements Strategy {
@Override
public int doOperation(int num1, int num2) {
return num1-num2;
}
}
OperationMultiply类:实际实现的策略三,乘法
package com.study.dp.strategy;
public class OperationMultiply implements Strategy {
@Override
public int doOperation(int num1, int num2) {
return num1*num2;
}
}
Context类:策略的执行类,向其传入不同策略的实例,则会执行不同的策略
package com.study.dp.strategy;
public class Context {
private Strategy strategy;
public Context(Strategy strategy) {
super();
this.strategy = strategy;
}
public int executeStrategy(int num1, int num2) {
return strategy.doOperation(num1, num2);
}
}
Demo类:测试类
package com.study.dp.strategy;
public class Demo {
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));
}
}
本文详细介绍了策略模式的概念及其在Java中的具体实现方式,并通过一个简单的算术运算实例来演示如何使用策略模式来改变对象的行为。
312

被折叠的 条评论
为什么被折叠?



