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

面向对象分析与设计40讲(7)设计原则之合成复用原则

文章目录

    • 一、概念
    • 二、示例(C++ 实现)
      • 1. 违反合成复用原则的示例(过度使用继承)
      • 2. 遵循合成复用原则的示例(使用组合)
    • 三、总结
      • 1. 继承是“强绑定”,组合是“弱关联”
      • 2. 继承固化“静态结构”,组合支持“动态变化”
      • 3. 继承放大“设计缺陷”,组合隔离“局部问题”
      • 一句话总结

一、概念

合成复用原则(Composition Reuse Principle,CRP)是面向对象设计中的重要原则,核心思想是:优先使用对象组合(合成),而不是通过继承来实现代码复用

简单来说,当需要复用已有功能时,应尽量通过 “将已有对象作为新对象的成员变量”(组合)来实现,而不是让新类继承已有类。这样可以避免继承带来的紧耦合问题 —— 子类会依赖父类的实现细节,父类的任何修改都可能影响子类。

合成复用原则的优势:

  • 降低耦合度:组合关系中,新对象仅通过接口使用已有对象的功能,不依赖其内部实现;

  • 提高灵活性:可以在运行时动态更换组合的对象,实现功能的动态扩展;

  • 避免继承链的臃肿:过度使用继承会导致类层次结构复杂(如 “菱形继承” 问题),组合则更灵活。

二、示例(C++ 实现)

1. 违反合成复用原则的示例(过度使用继承)

假设需要实现一个 “游戏角色” 系统,角色需要有 “移动” 和 “攻击” 功能。若使用继承实现复用:

#</
http://www.lryc.cn/news/597878.html

相关文章:

  • 前端实现可编辑脑图的方案
  • 网络编程初识(详细易懂)
  • 嵌入式linux下的NES游戏显示效果优化方案:infoNES显示效果优化
  • Python进阶知识之pandas库(一)基础数据类型
  • Android热修复实现方案深度分析
  • Android root和完整性检测实现方案深度分析
  • 海信IP501H-IP502h_GK6323处理器-原机安卓9专用-TTL线刷烧录可救砖
  • HTTPS证书体系,证书加密流程(通信体系)
  • lumerical——光纤布拉格光栅(Fiber Bragg gratings)
  • Linux 或者 Ubuntu 离线安装 ollama
  • 【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts) 视频教程 - 主页-最近七天微博发布量实现
  • pig cloud框架中引入websocket
  • 车载绝缘子放电状态检测系统数据分析软件需求说明书
  • python自动化测试框架,封装方法方式
  • WebGIS 常用坐标系
  • 日语学习-日语知识点小记-构建基础-JLPT-N3阶段(8):自動詞 & 他動詞 「~ている」「~ておく」「~てある」
  • 【西北工业大学公开课】导引系统原理(全61讲)周军 -个人笔记版 5000字
  • JVM、Dalvik、ART垃圾回收机制
  • 大模型就业方向
  • OpenCV(02)图像颜色处理,灰度化,二值化,仿射变换
  • 【学习笔记】机器学习(Machine Learning) | 第七章|神经网络(3)
  • 解决sparksql创建出来的数据库路径错误的问题
  • VSCode 开发 STM32 - clangd 带来的极致补全体验
  • 13. event.target 和 event.currentTarget 区别
  • 加载用户设置时遇到错误找到一个带有无效“icon“的配置文件。将该配置文件默认为无图标。确保设置“icon“时,该值是图像的有效文件路径“
  • ElasticSearch基础数据查询和管理详解
  • 电商项目_秒杀_压测
  • 多服务器批量发布软件
  • SQL难点突破之复杂业务逻辑的SQL查询实战
  • 力扣刷题(第九十六天)