当前位置: 首页 > news >正文

万网的成品网站韶关疫情最新消息

万网的成品网站,韶关疫情最新消息,百度推广投诉电话客服24小时,个人网站可以做品牌推广文章目录 0 概念1 使用场景2 优缺点2.1 优点2.2 缺点 3 实现方式4 和其他模式的区别5 具体例子实现5.1 实现代码 0 概念 定义:定义一个算法族,并分别封装起来。策略让算法的变化独立于它的客户(这样就可在不修改上下文代码或其他策略的情况下…

文章目录

  • 0 概念
  • 1 使用场景
  • 2 优缺点
    • 2.1 优点
    • 2.2 缺点
  • 3 实现方式
  • 4 和其他模式的区别
  • 5 具体例子实现
    • 5.1 实现代码

0 概念

定义:定义一个算法族,并分别封装起来。策略让算法的变化独立于它的客户(这样就可在不修改上下文代码或其他策略的情况下,添加新算法或修改已有算法)。

上下文通过同样的通用接口与所有策略进行交互, 而该接口只需暴露一个方法来触发所选策略中封装的算法即可。

1 使用场景

1,当你想使用对象中各种不同的算法变体, 并希望能在运行时切换算法时, 可使用策略模式。

策略模式让你能够将对象关联至可以不同方式执行特定子任务的不同子对象, 从而以间接方式在运行时更改对象行为。

2,当你有许多仅在执行某些行为时略有不同的相似类时, 可使用策略模式。

策略模式让你能将不同行为抽取到一个独立类层次结构中, 并将原始类组合成同一个, 从而减少重复代码。

3,如果算法在上下文的逻辑中不是特别重要, 使用该模式能将类的业务逻辑与其算法实现细节隔离开来。

策略模式让你能将各种算法的代码、 内部数据和依赖关系与其他代码隔离开来。 不同客户端可通过一个简单接口执行算法, 并能在运行时进行切换。

4,当类中使用了复杂条件运算符以在同一算法的不同变体中切换时, 可使用该模式。

策略模式将所有继承自同样接口的算法抽取到独立类中, 因此不再需要条件语句。 原始对象并不实现所有算法的变体, 而是将执行工作委派给其中的一个独立算法对象。

2 优缺点

2.1 优点

  • 可以在运行时切换对象内的算法。
  • 可以将算法的实现和使用算法的代码隔离开来。
  • 可以使用组合来代替继承。
  • 开闭原则。 无需对上下文进行修改就能够引入新的策略。

2.2 缺点

  • 如果你的算法极少发生改变, 那么没有任何理由引入新的类和接口。 使用该模式只会让程序过于复杂。

  • 客户端必须知晓策略间的不同——它需要选择合适的策略。

  • 许多现代编程语言支持函数类型功能, 允许你在一组匿名函数中实现不同版本的算法。 这样, 你使用这些函数的方式就和使用策略对象时完全相同, 无需借助额外的类和接口来保持代码简洁。

3 实现方式

1,从上下文类中找出修改频率较高的算法 (也可能是用于在运行时选择某个算法变体的复杂条件运算符)。

2,声明该算法所有变体的通用策略接口。

3,将算法逐一抽取到各自的类中, 它们都必须实现策略接口。

4,在上下文类中添加一个成员变量用于保存对于策略对象的引用。 然后提供设置器以修改该成员变量。 上下文仅可通过策略接口同策略对象进行交互, 如有需要还可定义一个接口来让策略访问其数据。

4 和其他模式的区别

请添加图片描述

5 具体例子实现

实现要求:鸭子共有三种行为,游泳行为(所有鸭子都会),飞行行为(能飞/不能飞/具有火箭动力的飞行),叫声行为(嘎嘎叫/吱吱叫/什么都不会叫),不同具体鸭子(绿头鸭/模型鸭/…)飞行行为和叫声行为可能不一样。

⚠️:最终目标:给具体鸭的飞行行为和叫声行为添加新功能时,不会改变基类鸭和具体鸭。)

  • 1,初始想法(继承):设计基类鸭包含具体鸭的所有共有行为,具体鸭继承基类鸭后的功能,但是给基类鸭添加某些功能代码后,可能会导致具体鸭有不该有功能。
    在这里插入图片描述

  • 2,改进:把变化的部分抽取出来,设计为接口,让具体鸭继承基类鸭和飞行行为、叫声行为的接口。
    在这里插入图片描述

但是这样设计会产生大量冗余代码(很多具体鸭子的功能是相互重复的)。
在这里插入图片描述

  • 3,继续改进方法:把行为接口类基类组合/委托(存放指向接口类的指针)在基类鸭中,具体的行为在行为接口子类中,基类鸭只对子类鸭提供行为基类接口。这样更改飞行/叫声行为就不会影响到抽象鸭和具体鸭。

在这里插入图片描述

5.1 实现代码

C++、Java、Python代码实现的具体方法见此博文。

请添加图片描述

完整的代码,见Gitee仓库。

http://www.hkea.cn/news/536128/

相关文章:

  • 常用设计资源网站爱网站
  • 企业品牌网站营销关于seo的行业岗位有哪些
  • 群晖怎样做网站惠州网络营销
  • 怎么做网站内部链接的优化品牌营销推广代运营
  • 婚纱照网站制作搜索引擎优化搜索优化
  • 网站建设吉金手指专业13中国营销网站
  • 做销售在哪些网站注册好百度产品
  • dw做汽车网站seo排名工具提升流量
  • 网络培训学校排名奉化seo页面优化外包
  • vps除了做网站还能做什么晨阳seo服务
  • seo网站建设优化什么意思网络营销与直播电商专业就业前景
  • 工程建设企业网站网站关键词优化应该怎么做
  • 修复wordpress青岛网站优化
  • 敦煌网站做外贸怎样网页推广怎么做的
  • 南京网站建设优化今日头条普通版
  • 网站编辑的工作职能有哪些活动营销案例100例
  • 小程序招商加盟平台我是seo关键词
  • wordpress 发帖机镇江抖音seo
  • 网站建设的小结可以发外链的论坛有哪些
  • 网站正常打开速度网店营销与推广策划方案
  • 义乌 网站制作进入百度app
  • 做外围网站赌球红树林seo基础入门免费教程
  • 绿色风格网站seo排名赚钱
  • 南宁企业免费建站百度推广营销怎么做
  • 建立个人网站的成本短视频seo营销系统
  • 深圳公司名称大全网站结构优化的内容和方法
  • 安康市代驾公司上海网站关键词排名优化报价
  • 怎么在网站上建设投票统计在线培训系统app
  • 泰州网站建设哪家好网站seo的主要优化内容
  • 洛卡博网站谁做的seo权重查询