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

设计模式(2)

结构型设计模式

适配器

当遇到具体实现与定义的抽象接口不匹配时,为了成功实现功能,引入一个适配器。使其同时能满足所需接口与具体实现之间的关系。

遵守合成复用原则,则应该将对应实现类引入适配器类进行组合。

桥接

当维度过多时,如果全部定义为接口进行实现,会导致实现类众多而繁杂,应该将其中最重要的维度作为抽象类,其余维度引入作为变量,这样方便设定

装饰

在不改变类本身功能的前提下,对类的行为进行额外的补充,可以进行嵌套

外观

由于多流程,导致访问类种类多繁杂,并且客户端与各项服务之间关联性强,此时可以使用一个“门面”,将各个流程响应的方法统一一下,由门面向具体实现派发任务,相当于找门面就能直接完成流程

代理

当一个对象不便于直接访问,借助代理类进行访问

与装饰模式的区别在于,装饰器是对自身的加强,使用的还是本身,增强的就是和业务有关的,而代理模式使用的就是代理类,是由代理类进行负责做事情,添加的行为一般与业务无关。

享元

将重复出现的内容,作为共享内容,无需多次创建,每次需要就向享元工厂请求即可。

组合

就是将多个组件组合成为一个组件,或者是组件中包含组件

行为型设计模式

解释器

模板方法

在一套操作中,有些固定的,有些是变化的,固定方法先写好,变化方法根据子类变化而不同就由子类延迟实现,但是最后的总体操作时相同的。

责任链

迭代器模式

详情参见各类集合的迭代器模式

中介者模式

如果由很多对象,那么做一件事情可能需要错综复杂的对象调用关系

如果引入中介就相对清晰

备忘录模式

在某个时间节点,建立一个记录,在出错时可以进行回溯操作,例如CTRL+Z

观察者模式

当对象发生变化时,可能会导致其他对象发生变化,因此可以创建观察者监控对象的变化,通常将观察者对象直接引入需要观察的对象。

状态模式

不同状态下有不同行为,一般是自发转换

命令模式

策略模式

同样是不同状态下有不同行为,但一般是使用者主动转换

访问者模式

不同角色对同一事件或对象有不同的行为,将不同操作与对象属性进行分离。

相关文章:

  • 前端资源缓存策略全面解析:从原理到实践
  • 【Ultralytics YOLO COCO 评估脚本 | 获得COCO评价指标】
  • 鲲鹏920部署GAZELLE用户态协议栈
  • 通用智能人“通通”2.0发布,AI迈向“类人”智能新时代
  • 用Python做数据分析之数据统计
  • 在STM32H725多定时器同步移相(基于ASTM32CubeMX)
  • embedding 不同库和维度选型对比
  • 企业需要使用防病毒系统保障数据安全的原因
  • 批量修改记事本文本文件编码,可以解决文本文件乱码问题
  • 使用了C++11标准库中的随机数生成器
  • 医药企业数字化转型路径:从数据驱动到生态重构
  • GPT降智?静态住宅IP也许是关键!
  • 前端react 实现分段进度条
  • Linux(25)——进程调度
  • SQL Server :可用性组 automatic seeding
  • Visual Studio Code配置自动规范代码格式
  • 大语言模型智体的综述:方法论、应用和挑战(上)
  • 随性研究c++-智能指针
  • 扫描仪+文档pdf编辑器+pdf格式转换器
  • 电力系统惯量及其作用解析
  • CBA官方对孙铭徽罚款3万、广厦投资人楼明停赛2场罚款5万
  • 官方数据显示:我国心血管疾病患者已超3亿人
  • “80后”北大硕士罗婕履新甘肃宁县县委常委、组织部部长
  • 时隔3年,持续近2小时,俄乌在土耳其谈成了什么?
  • 张国清将赴俄罗斯举行中俄“长江—伏尔加河”地方合作理事会第五次会议和“东北—远东”政府间合作委员会双方主席会晤
  • 长期吃太饱,身体会发生什么变化?