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

策略模式(组件协作)

策略模式(组件协作)

链接:策略模式实例代码 + 注解

目的

正常情况下,一个类/对象中会包含其所有可能会使用的内外方法,但是一般情况下,这些常使用的类都是由不同的父类继承、组合得来的,来实现代码的复用,这当然也包括了重复的方法

  • **冗余:**但是如果这些算法、方法放置的位置不好可能会导致不常使用甚至不使用的算法编码到了对象中。
  • 扩展:若是在未来再对该模块扩展、修改时将会直接去触碰类成员,这一点违背了我们的开闭原则

如何正确的将这些父子、兄弟间的不同、相似、相同算法放在好的位置并去独立以达到解耦、去冗余的作用就是策略模式所注意的。

模式定义

定义一系列算法,把它们一个个封装起来,并且使它们可互相替换(变化)。该模式使得算法可独立于使用它的客户程序(稳定)而变化(扩展,子类化)。 ——《设计模式》 GoF

要点总结

  • Strategy及其子类为组件提供了一系列可重用的算法,从而可以使得类型在运行时方便地根据需要在各个算法之间进行切换。
  • Strategy模式提供了用条件判断语句以外的另一种选择,消除条件判断语句,就是在解耦合。含有许多条件判断语句的代码通常都需要Strategy模式。
  • 如果Strategy对象没有实例变量,那么各个上下文可以共享同一个Strategy对象,从而节省对象开销

Eg.

在这里插入图片描述

http://www.lryc.cn/news/268044.html

相关文章:

  • 每日一题-----逆序字符串
  • js两个对象数组合并。并且去掉里边某个属性相同的对象
  • 创建重试机制
  • [c]统计数字
  • 采用ODP.NET 批量进行数据同步
  • 【vue滚动条插件vuescroll】【vue自定义滚动条】
  • python 1200例——【8】冒泡排序
  • 在PyTorch中设置随机数生成器的种子值
  • 用手机做无人直播怎么做?
  • 【zookeeper经典应用实战】
  • 12月25日作业
  • React学习计划-React16--React基础(五)脚手架创建项目、todoList案例、配置代理、消息订阅与发布
  • C语言中switch语句中的case后()
  • 【RocketMQ笔记02】安装RocketMQ可视化工具rocketmq-dashboard
  • AutoSAR(基础入门篇)2.2-AutoSAR架构中的Ports类型与Runnables可运行实体
  • 【Unity】GPU骨骼动画 渲染性能开挂 动画合批渲染 支持武器挂载
  • 打开相机失败 出现错误的原因
  • 什么是阿里云负载均衡SLB?
  • Mybatis三 | 动态SQL
  • 信号与槽QT4和QT5的区别
  • K8S 搜集java应用pod重启前现场 —— 筑梦之路
  • php5.6安装mongo扩展
  • 简析SoBit 跨链桥图文教程
  • C#与php自定义数据流传输
  • redis和数据库的同步问题
  • Flink系列之:深入理解ttl和checkpoint,Flink SQL应用ttl案例
  • Wails中js调用go函数(1种go写法,2种js调用方法)
  • 【我与java的成长记】之面向对象的初步认识
  • 面试题之二HTTP和RPC的区别?
  • 初试Kafka