策略模式的定义:该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。策略模式属于对象行为模式,它通过对算法进行封装,把使用算法的责任和算法的实现分割开来,并委派给不同的对象对这些算法进行管理。
下面我们通过加减乘的运算来实现策略模式。
策略模式的实现;
1. 创建一个策略接口
public interface Strategy {
public int operate(int x,int y);
}
2. 创建策略接口的三个实现类,分别表示加减乘运算
public class AddStrategy implements Strategy {
@Override
public int operate(int x, int y) {
return x + y;
}
}
public class SubStrategy implements Strategy {
@Override
public int operate(int x, int y) {
return x - y;
}
}
public class MultStrategy implements Strategy {
@Override
public int operate(int x, int y) {
return x * y;
}
}
3. 使用 Context 来查看当它改变策略 时的行为变化。
public class Context {
private Strategy strategy;
public Context(Strategy strategy) {
this.strategy = strategy;
}
public int execute(int x,int y){
return strategy.operate(x,y);
}
}
4. 使用策略模式完成加减乘运算
public class StrategyMain {
public static void main(String[] args) {
int x = 24;
int y = 8;
Context context1 = new Context(new AddStrategy());
int add = context1.execute(x,y);
System.out.println("x = 24, y = 8, x+y=" + add);
Context context2 = new Context(new SubStrategy());
int sub = context2.execute(x,y);
System.out.println("x = 24, y = 8, x-y=" + sub);
Context context3 = new Context(new MultStrategy());
int mult = context3.execute(x,y);
System.out.println("x = 24, y = 8, x*y=" + mult);
}
}
创建型模式
- 工厂模式:【每天一个java设计模式(一)】 - 工厂模式
- 抽象工厂模式: 【每天一个java设计模式(二)】 - 抽象工厂模式
- 单例模式:【每天一个java设计模式(三)】 - 单例模式
- 原型模式:【每天一个java设计模式(四)】 - 原型模式
- 建造者模式: 【每天一个java设计模式(五)】 - 建造者模式
结构型模型
- 适配器模式 : 【每天一个java设计模式(六)】 - 适配器模式
- 代理模式: 【每天一个java设计模式(七)】 - 代理模式模式
- 桥接模式:【每天一个java设计模式(八)】 - 桥接模式
- 装饰器模式:【每天一个java设计模式(九)】 - 装饰器模式
- 外观模式:【每天一个java设计模式(十)】 - 外观模式
- 享元模式:【每天一个java设计模式(十一)】 - 享元模式
- 组合模式:【每天一个java设计模式(十二)】 - 组合模式
行为型模式
下一节:
状态模式:【每天一个java设计模式(十七)】 - 状态模式