设计模式22-策略模式,Strategy)

技术设计模式22-策略模式,Strategy) 设计模式22-策略模式(Strategy)策略模式的重点在于其实现可以去感知随意替换,根据不同的场景调用不同的实现。设计模式22-策略模式(Strateg

设计模式22-策略模式。

策略的重点是其实现可以随意替换,可以根据不同的场景调用不同的实现。

设计模式22-策略模式(Strategy)

概述

策略的重点是其实现可以随意替换,可以根据不同的场景调用不同的实现。

优点

算法可以自由切换。

避免多重条件判断。

扩展性好。

缺点

阶级扩张。

所有策略类都需要公开。

简单实现

JDK实现

策略需要设计一个接口,为一系列提供外部调用的策略模式实现类提供统一的方法。

界面策略{

/**

*打印邮件

*

* @param消息消息

*/

无效打印(字符串消息);

}

通过不同的实现提供不同的业务逻辑。

公共类正常策略实现策略{

@覆盖

公共无效打印(字符串消息){ 0

System.out.println(消息);

}

}

公共类错误策略实现策略{

@覆盖

公共无效打印(字符串消息){ 0

System.err.println(消息);

}

}

在不同的场景中,通过调用不同的实现类来完成不同的业务逻辑。

公共类设计模式

@测试

public void strategyDesignPattern(){ 0

字符串消息=“这是一条消息”;

strategy print strategy=new normal strategy();

printStrategy.print(消息);

print strategy=new error strategy();

printStrategy.print(消息);

}

}

源码解析

和状态模式的比较

模式封装了业务逻辑,业务逻辑被解耦。模式将业务逻辑封装成状态,状态之间存在切换关系,这可以在上下文或状态本身中实现。

该模式根据不同的业务场景切换不同的业务逻辑;模式通过在同一个场景中设置不同的状态来调用不同的业务逻辑。

策略业务逻辑的增加和删除不影响其他已有的业务逻辑;模式状态的添加和删除需要在其他状态实现中修改切换状态逻辑。

策略模式可以由客户端直接调用,状态模式必须由客户端通过有状态模型调用。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/53729.html

(0)

相关推荐

  • 顺序志愿,学考志愿填报顺序重要吗

    技术顺序志愿,学考志愿填报顺序重要吗重要的,一般是按顺序录取,所以第一志愿很重要顺序志愿。考生要按照招生专业对选考科目的要求填报志愿,只有符合选考科目要求才能报考相应专业。考生须熟知平行志愿投档原则。平行志愿投档时按照“

    生活 2021年10月31日
  • CSS面试题有哪些

    技术CSS面试题有哪些本篇内容主要讲解“CSS面试题有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“CSS面试题有哪些”吧!1、flex常见面试题Flex 是 Flexi

    攻略 2021年12月10日
  • mysql中event怎么用

    技术mysql中event怎么用这篇文章主要为大家展示了“mysql中event怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“mysql中event怎么用”这篇文章吧。

    攻略 2021年11月2日
  • 显示器设置,戴尔2721d显示器设置

    技术显示器设置,戴尔2721d显示器设置1显示器设置、以win7系统为例,打开戴尔显示器,在屏幕左下角打开开始选项并选择其中的“控制面板”。
    2、然后在打开的“控制面板”中选择“外观和个性化”选项。
    3、然后在打开的新页

    生活 2021年10月27日
  • vs code vue模板如何创建

    技术vs code vue模板如何创建这篇文章主要为大家展示了“vs code vue模板如何创建”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“vs code vue模板如何

    攻略 2021年11月24日
  • 我会游泳英语怎么说,我要去游泳用英语怎么说

    技术我会游泳英语怎么说,我要去游泳用英语怎么说现在时我会游泳英语怎么说: i go to swim .口语化一点: Lets go swimming! 去游泳吧!
    过去时:I went to swim yesterday

    生活 2021年10月27日