设计模式笔记-策略模式
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应用上下文和具体组件接口类型作为参数,来决定不同组件的默认类型以实现组件的初始化操作
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/18351.html