设计模式笔记-策略模式
Posted SingleOneMan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式笔记-策略模式相关的知识,希望对你有一定的参考价值。
设计模式笔记-策略模式
文章目录
1.策略模式
策略模式(Strategy),定义了一组算法,将每个算法都封装起来,并且使它们之间可以互换,在使用时,根据传入的类型不同,随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法
策略模式和简单工厂模式的区别:
工厂是创建型模式,它的作用就是创建对象,简单工厂模式根据传入的类名不同创建不同的类
策略模式直接替换相应的方法或者事件,策略是行为型模式,它的作用是让一个对象在许多行为中选择一种行为;
2.常见写法
具体实现:
1.定义策略接口或者抽象策略类
2.实现具体的策略或者继承抽象类实现重写抽象策略类接口
3.定义Context 类,contetx中定义方法根据不同的策略类型操作策略
4.使用的时候根据不同的策略类型替换相应的策略
public interface Strategy
public int doOperation(int num1, int num2);
public class OperationAdd implements Strategy
@Override
public int doOperation(int num1, int num2)
return num1 + num2;
public class OperationMultiply implements Strategy
@Override
public int doOperation(int num1, int num2)
return num1 * num2;
public class Context
private Strategy strategy;
public Context(Strategy strategy)
this.strategy = strategy;
public int executeStrategy(int num1, int num2)
return strategy.doOperation(num1, num2);
public class test
public static void main(String[] args)
Context context = new Context(new OperationAdd());
System.out.println(context.executeStrategy(1,2));
context = new Context(new OperationMultiply());
System.out.println(context.executeStrategy(1,2));
3.常见框架中的策略模式
1.spring中的AbstractFileResolvingResource(implements Resource)抽象类,spring 将会提供不同的 Resource 实现类,不同的实现类负责不同的资源访问逻辑
2.DispatchServlet中的初始化组件中,用到了getDefaultStrategies方法,它接受spring应用上下文和具体组件接口类型作为参数,来决定不同组件的默认类型以实现组件的初始化操作
以上是关于设计模式笔记-策略模式的主要内容,如果未能解决你的问题,请参考以下文章