【策略模式】分离算法的设计模式

策略,即方法,策略模式,即方法模式,如何对多种方法进行有效管理并使用,这就是所谓的策略模式。
策略模式定义了一系列的实现方法,并将每一个方法都封装起来,而且使他们能够相互替换相互独立。

使用场景:

  1. 针对同一类型问题的多种处理方式,仅仅是具体行为有差别的时候
  2. 需要安全地封装多种同一类型的操作时
Paste_Image.png

Context:用来操作策略的上下文环境
Stragery:策略的抽象
ConcreateStrageryA,ConcreateStrageryB:具体的策略实现

下面我们简单用一个例子来写,写一个房贷计算器,把首期付款后,剩下余额使用银行按揭分期付款。按揭房贷分为两种方式,等额本息和等额本金!那么框架这样写
<pre>
public interface Caculator{
public double getAccrual(double rate,int month,double money);
}
</pre>
<pre>
public class AccrualCaculator Implements Caculator{
@Override
public double getAccrual(double rate,int month,double money){
return 0;
}
}
</pre>
<pre>
public class CapitalCaculator Implements Caculator{
@Override
public double getAccrual(double rate,int month,double money){
return 0;
}
}
</pre>
<pre>
public class Main{
static Caculator caculator = new AccrualCaculator();
public static void main(String args[]){
caculator.getAccrual(rate,month,money);
}

public static void setCaculator(Caculator caculator ) {
Main.caculator = caculator ;
}
}
</pre>

这样写的话,以后要更新添加新的方式,直接继承Caculator 就可以了,这就是策略模式的基本设计思路。替换不同的策略只需要更改依赖注入的参数就可以了。。。

<h3>总结</h3>
策略模式主要是用来分离算法,在相同的行为抽象下有不同的具体实现策略。这个模式很好地演示了开闭原则,也就是定义抽象,注入不同的实现,从而达到很好的可扩展性

优点:
结构清晰明了,使用简单直观
耦合度相对而言较低,扩展方便
操作封装比较彻底,数据更为安全
缺点:
策略的增加会导致子类变得繁多

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1 场景问题# 1.1 报价管理## 向客户报价,对于销售部门的人来讲,这是一个非常重大、非常复杂的问题,对不同的...
    七寸知架构阅读 5,133评论 9 62
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,482评论 25 708
  • 1 场景问题 1.1 报价管理 向客户报价,对于销售部门的人来讲,这是一个非常重大、非常复杂的问题,对不同的客户要...
    4e70992f13e7阅读 3,128评论 2 16
  • 设计模式汇总 一、基础知识 1. 设计模式概述 定义:设计模式(Design Pattern)是一套被反复使用、多...
    MinoyJet阅读 3,982评论 1 15
  • 晚安,夜眠 生命终极 本不安然 人世烟云 绚丽多姿 挫折崎岖 装饰人身 路遇曲折 波澜不惊 淡然则安 时光易逝 岁...
    雨过风吹阅读 176评论 0 0