面向对象设计五个基本原则

简介: 只有聪明人才能看见的简介~( ̄▽ ̄~)~

开闭原则

里氏代换原则

依赖倒置原则

接口隔离原则

单一职责原则


开闭原则,在面向对象编程领域中,规定“软件中的对象(类,模块,函数等等)应该对于扩展是开放的,但是对于修改是封闭的”,这意味着一个实体允许在不改变它的源代码的前提下变更它的行为。该特性在产品化的环境中是特别有价值的,在这种环境中,改变源代码需要代码审查,单元测试以及诸如此类的用以确保产品使用质量的过程。遵循这种原则的代码在扩展时并不发生改变,因此无需上述的过程。

里氏代换原则(LSP)是面向对象设计的基本原则之一。 里氏代换原则中说,任何基类可以出现的地方,子类一定可以出现。 LSP是继承复用的基石,只有当衍生类可以替换掉基类,软件单位的功能不受到影响时,基类才能真正被复用,而衍生类也能够在基类的基础上增加新的行为。里氏代换原则是对“开-闭”原则的补充。实现“开-闭”原则的关键步骤就是抽象化。而基类与子类的继承关系就是抽象化的具体实现,所以里氏代换原则是对实现抽象化的具体步骤的规范。

依赖倒置原则(Dependence Inversion Principle)是程序要依赖于抽象接口,不要依赖于具体实现。简单的说就是要求对抽象进行编程,不要对实现进行编程,这样就降低了客户与实现模块间的耦合。面向过程的开发,上层调用下层,上层依赖于下层,当下层剧烈变动时上层也要跟着变动,这就会导致模块的复用性降低而且大大提高了开发的成本。面向对象的开发很好的解决了这个问题,一般情况下抽象的变化概率很小,让用户程序依赖于抽象,实现的细节也依赖于抽象。即使实现细节不断变动,只要抽象不变,客户程序就不需要变化。大大降低了客户程序与实现细节的耦合度。


接口隔离原则。使用多个专门的接口比使用单一的总接口要好。一个类对另外一个类的依赖性应当建立在最小的接口上。一个接口代表一个角色,不应当将不同的角色都交给一个接口。没有关系的接口合并在一起,形成一个臃肿的大接口,这是对角色和接口的污染。如果强迫客户使用它们不使用的方法,那么这些客户就会面临由于这些不使用的方法的改变所带来的改变。


单一职责原则(SRP:Single Responsibility Principle)。它规定一个类应该只有一个发生变化的原因。该原则基于内聚性原则发展出。所谓职责是指类变化的原因。每一个职责都是变化的一个轴线,如果一个类有一个以上的职责,这些职责就耦合在了一起。一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当发生变化时,设计会遭受到意想不到的破坏。而如果想要避免这种现象的发生,就要尽可能的遵守单一职责原则。此原则的核心是高内聚低耦合。

内聚性是对一个模块内部各个组成元素之间相互结合的紧密程度的度量指标。模块中组成元素结合得越紧密,模块的内聚性就越高,模块的独立性也就越高。理想的内聚性要求模块的功能应明确、单一,即一个模块只做一件事情。高内聚性一般和许多理想的软件特性有关,包括鲁棒性、可靠度、可复用性及易懂性等特性,而低内聚性一般也代表不易维护、不易测试、不易复用以及难以理解。耦合性是和内聚性相对的概念。一般而言高内聚性代表低耦合性,反之亦然。

鲁棒是Robust的音译,也就是健壮和强壮的意思。鲁棒性(robustness)就是系统的健壮性。它是指一个程序中对可能导致程序崩溃的各种情况都充分考虑到,并且作相应的处理,在程序遇到异常情况时还能正常工作,而不至于死机。比如说,计算机软件在输入错误、磁盘故障、网络过载或有意攻击情况下,能否不死机、不崩溃,就是该软件的鲁棒性。相应的处理,例如输入检查、异常捕获与处理等等,这些要靠程序员的经验来完成。所谓“鲁棒性”,是指控制系统在一定的参数摄动下,维持某些性能的特性。

相关文章
|
7月前
|
人工智能 自然语言处理 安全
“养龙虾玩Skill”指南!OpenClaw(Clawdbot)阿里云/本地部署+新手3种 Skill 挖掘AI工具核心价值
OpenClaw(昵称“龙虾”)的爆火,让“养龙虾玩Skill”成了2026年的新潮流——有人用它自动化处理工作,有人靠定制部署服务变现,甚至闲鱼上500元一次的上门部署生意都应运而生。但多数新手入手后,只停留在基础对话层面,殊不知OpenClaw的核心价值藏在Skill生态中——这些可执行的“能力单元”,就像一个个专属机器人,能将自然语言指令转化为实际操作,从文档处理到硬件控制,覆盖全场景需求。
3655 5
|
6月前
|
人工智能 弹性计算 Linux
阿里云轻量应用服务器2核2G38元,2核4G9.9元1个月、199元1年:抢购成功可以做什么?
2026年阿里云的轻量应用服务器抢购活动,新增了一款2核4G配置,与2核2G款共同构成高性价比选择。2核2G配置适合个人博客、企业官网等轻量应用,38元/年;2核4G配置则支持更复杂任务,如搭建AI助理、运行小型数据库等,9.9元/月起。两款服务器均预装丰富镜像,便于快速部署。活动面向新用户,抢购需遵守严格规则。
817 1
|
数据可视化
轻量级项目排期模板零配置指南:5分钟搭建敏捷时间线
你是否在用 Excel 做项目排期时遇到诸多困扰?本文介绍轻量级项目排期模板,无需公式函数,零基础也能 10 分钟上手,通过可视化设计、轻量化操作和实时协作,帮助团队高效管理项目,告别信息混乱与低效沟通。
轻量级项目排期模板零配置指南:5分钟搭建敏捷时间线
|
7月前
CLion中文乱码的解决方案
CLion中文乱码的解决方案
378 1
|
9月前
|
人工智能 自动驾驶 机器人
2026 AI 元年:从技术狂欢到价值共生的智能新纪元
本文基于公开资料与行业观察,分析AI从“模型能力展示”向“真实场景应用”的演进趋势,探讨世界模型、具身智能、多智能体系统等方向的进展与挑战,涵盖工业、金融、医疗等领域案例,提供中立、务实的技术与产业参考视角。
470 1
|
运维 监控 Kubernetes
Bitnami 替代品:Websoft9 如何接力单服务器多应用时代
Bitnami 曾为开源应用部署带来革命性体验,但随着 Docker 成熟与战略转向云原生,其单机多应用支持逐渐弱化。面对多应用管理分散、资源冲突、运维工具缺失等痛点,Websoft9 应运而生,提供一键部署、统一管理、智能调度等能力,全面优化单服务器多应用运维体验,成为 Bitnami 的理想继任者。
449 0
Bitnami 替代品:Websoft9 如何接力单服务器多应用时代
|
移动开发 前端开发 安全
【HarmonyOS next】ArkUI-X休闲益智消消乐【进阶】
本项目基于ArkUI-X实现H5游戏与原生应用融合,通过Web组件将Vue+Canvas开发的消消乐游戏无缝嵌入ArkTS容器,支持HarmonyOS与iOS双平台运行。核心包括:跨端渲染适配、高性能动画引擎、触控事件归一化及多端性能优化,代码复用率达92%,帧率稳定≥55FPS,触控延迟<80ms。提供完整源码与开发建议,拓展方向涵盖分布式续玩与原生能力集成。
537 0
|
存储 API 数据安全/隐私保护
【02】整体试验思路,在这之前我们发现sec_uid,sec_uid是什么和uid的关系又是什么?相互如何转换?python开发之理论研究试验,如何通过抖音视频下方的用户的UID获得抖音用户的手机号-本系列文章仅供学习研究-禁止用于任何商业用途-仅供学习交流-优雅草卓伊凡
【02】整体试验思路,在这之前我们发现sec_uid,sec_uid是什么和uid的关系又是什么?相互如何转换?python开发之理论研究试验,如何通过抖音视频下方的用户的UID获得抖音用户的手机号-本系列文章仅供学习研究-禁止用于任何商业用途-仅供学习交流-优雅草卓伊凡
4019 6
|
移动开发 前端开发 JavaScript
html5 Canvas 绘制基本图形 从直线图形到使用路径 - 直线、矩形、路径、多边形、复杂组合图形
html5 Canvas 绘制基本图形 从直线图形到使用路径 - 直线、矩形、路径、多边形、复杂组合图形
628 0
html5 Canvas 绘制基本图形 从直线图形到使用路径 - 直线、矩形、路径、多边形、复杂组合图形

热门文章

最新文章