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

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

文章目录

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

一、概念

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

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

合成复用原则的优势:

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

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

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

二、示例(C++ 实现)

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

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

#</
http://www.dtcms.com/a/294162.html

相关文章:

  • 用 PyTorch 实现全连接网络识别 MNIST 手写数字
  • 【Unity编辑器开发与拓展Handles】
  • PyTorch中nn.Module详解和综合代码示例
  • 不同地区的主要搜索引擎工具
  • Java项目中定时任务三方工具和技术的深度应用指南
  • C#定时任务实战指南:从基础Timer到Hangfire高级应用
  • 基于Python的新闻爬虫:实时追踪行业动态
  • SQL Server 数据类型的含义、特点及常见使用场景的详细说明
  • Redis 的事务机制是怎样的?
  • 【世纪龙科技】汽车专业数字课程资源-新能源汽车维护与故障诊断
  • UI自动化测试实战
  • RPA认证考试全攻略:如何高效通过uipath、实在智能等厂商考试
  • MCP vs 传统集成方案:AI时代下的协议革命与性能博弈
  • uniapp 仿美团外卖详情页滑动面板组件[可自定义内容、自定义高度]
  • UniApp H5 适配 PC 端新姿势:打造跨设备一致体验
  • 【Linux系统编程】基础指令
  • 实时视频传输遥控车:DIY智能家居监控与探索机器人
  • CentOS 7 Linux 基础知识点汇总
  • 【C++】OpenCV常用对比度增强方法
  • 华普微Matter模块HM-MT7201,打破智能家居生态孤岛
  • Shell 脚本里的流程控制
  • Android用户鉴权实现方案深度分析
  • Android Camera openCamera
  • 绿化工程路牙边界区分-CAD快速看图标注分类高效处理
  • 使用 MobaXterm 登录你的阿里云 ECS 实例
  • 不止于“亮”:一盏智慧路灯的技术进化史——塔能科技用“落地性”定义行业标准
  • RCLAMP0502A.TCT Semtech:超低电容TVS二极管,高速接口+军工级防护!
  • github最近的设计。
  • GraphQL批量查询优化:DataLoader如何让数据库访问速度飞起来?
  • Spring核心机制:@Bean注解与依赖注入的终极实践指南