博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
策略模式
阅读量:6791 次
发布时间:2019-06-26

本文共 1346 字,大约阅读时间需要 4 分钟。

策略模式

策略模式是一种定义一系列算法的方法

* 当一些算法完毕的都是同样的工作,仅仅是实现不同,就能够用同样的方式调用全部的算法。

* 策略模式能够减少算法的使用类与算法类之间的耦合。

封装变化点是面向对象的一种非常重要的思维方式。而策略模式就是封装了一系列概念上同样而实现不同的算法的变化之处。

所需的类:

  • Strategy 策略类(一系列算法类的抽象父类)
  • ConcreteStarategyA 详细算法类(继承自Strategy类)
  • Context 上下文类(策略对象在此类中生成)

策略模式的Strategy类为Context定义了一系列可供重用的算法或行为,使用继承能够提取出算法类的公共功能。另外,因为每个算法类都是单独存在的,所以策略模式能够简化单元測试。

在此处我们将简单工厂模式和策略模式相结合,从而使得策略对象在Context类得以生成。

代码实现:

Strategy类

/** * 抽象算法类 */public abstract class Strategy {
//算法方法 public abstract void AlgorithmInterface();}

Context类

public class Context {    Strategy strategy;    public Context(String type){        switch (type) {        case "A":            strategy = new ConcreteStarategyA();            break;        case "B":            strategy = new ConcreteStarategyB();            break;        default:            break;        }    }    //上下文接口    public void contextInterface(){        strategy.AlgorithmInterface();//依据详细的算法对象,调用事实上现方法    }}

详细的算法类

public class ConcreteStarategyA extends Strategy{
@Override public void AlgorithmInterface() { // TODO Auto-generated method stub //算法A的详细实现 }}
public class Application {    public static void main(String args[]){        //能够看出client仅仅须要认识Context一个类就能够了。        //相比于简单工厂模式这样的(策略模式与简单工厂模式相结合)能够减少耦合度。

Context context = new Context("B"); context.contextInterface(); } }

转载地址:http://ckogo.baihongyu.com/

你可能感兴趣的文章
Python 类与面向对象编程
查看>>
k8s-web集群架构从零开始(2)
查看>>
和我一起学 Selenium WebDriver(2)——入门篇
查看>>
SSH免账号密码登录
查看>>
跨多编程语言编程工具---Apache Thrift
查看>>
微信小程序实现锚点定位
查看>>
virsh创建虚拟机
查看>>
java中queue的使用
查看>>
git换行符LF与CRLF转换问题
查看>>
测试 Animations
查看>>
spring 技术内幕阅读笔记 - spring mvc
查看>>
6月份值得一看的 Java 技术干货!
查看>>
条件随机场---条件随机场的定义与形式
查看>>
机器学习基础---学习算法
查看>>
sturts2 标签
查看>>
Linux守护进程(init.d和xinetd)
查看>>
提问的智慧
查看>>
驰骋工作流引擎设计系列06 保存草稿设计
查看>>
软件开发人员的“七重苦”
查看>>
使用java基础反射访问私有域、方法和构造函数
查看>>