面向对象设计原则概述

面向对象设计原则概述对于面向对象软件系统的设计而言 在支持可维护性的同时 提高系统的可复用性是一个至关重要的问题 如何同时提高一个软件系统的可维护性和可复用性是面向对象设计需要解决的核心问题之一 在面向对象设计中 可维护性的复用是以设计原则为基础的 每一个原则都蕴含一些面向对象设计的思想 可以从不同的角度提升一个软件结构的设计水平 nbsp nbsp nbsp nbsp nbsp 面向对象设计原则为支持可维护性复用而诞生 这些原则蕴含在很多设计模式中

      对于面向对象软件系统的设计而言,在支持可维护性的同时,提高系统的可复用性是一个至关重要的问题,如何同时提高一个软件系统的可维护性和可复用性是面向对象设计需要解决的核心问题之一。在面向对象设计中,可维护性的复用是以设计原则为基础的。每一个原则都蕴含一些面向对象设计的思想,可以从不同的角度提升一个软件结构的设计水平。

      面向对象设计原则为支持可维护性复用而诞生,这些原则蕴含在很多设计模式中,它们是从许多设计方案中总结出的指导性原则面向对象设计原则也是我们用于评价一个设计模式的使用效果的重要指标之一,在设计模式的学习中,大家经常会看到诸如“XXX模式符合XXX原则”、“XXX模式违反了XXX原则”这样的语句。

       最常见的7种面向对象设计原则如下表所示:

1  7种常用的面向对象设计原则

设计原则名称

  

使用频率

单一职责原则

(Single Responsibility Principle, SRP)

一个类只负责一个功能领域中的相应职责

★★★★☆

开闭原则

(Open-Closed Principle, OCP)

软件实体应对扩展开放,而对修改关闭

★★★★★

里氏代换原则

(Liskov Substitution Principle, LSP)

所有引用基类对象的地方能够透明地使用其子类的对象

 

★★★★★

依赖倒转原则

(Dependence  Inversion Principle, DIP)

抽象不应该依赖于细节,细节应该依赖于抽象

★★★★★

接口隔离原则

(Interface Segregation Principle, ISP)

使用多个专门的接口,而不使用单一的总接口

★★☆☆☆

合成复用原则

(Composite Reuse Principle, CRP)

尽量使用对象组合,而不是继承来达到复用的目的

 

★★★★☆

迪米特法则

(Law of Demeter, LoD)

一个软件实体应当尽可能少地与其他实体发生相互作用

★★★☆☆

【作者:刘伟  http://blog.csdn.net/lovelion】

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/214056.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午5:05
下一篇 2026年3月18日 下午5:05


相关推荐

  • 这可能最全的操作系统面试题

    这可能最全的操作系统面试题文章目录操作系统简介篇解释一下什么是操作系统操作系统的主要功能软件访问硬件的几种方式解释一下操作系统的主要目的是什么操作系统的种类有哪些为什么 Linux 系统下的应用程序不能直接在 Windows 下运行操作系统结构单体系统分层系统微内核客户 服务器模式为什么称为陷入内核什么是用户态和内核态用户态和内核态是如何切换的 什么是内核什么是实时系统 Linux 操作系统的启动过程进程和线程篇多处理系统的优势什么是进程和进程表什么是线程 线程和进程的区别什么是上下文切换使用多线程的好处是什么进程终止的方式进程的终止

    2026年3月27日
    1
  • react使用antd警告:Warning: findDOMNode is deprecated in StrictMode. findDOMNode was passed an instance「建议收藏」

    react使用antd警告:Warning: findDOMNode is deprecated in StrictMode. findDOMNode was passed an instance「建议收藏」react中使用antd警告警告内容:警告原因:解决办法:警告内容:Warning:findDOMNodeisdeprecatedinStrictMode.findDOMNodewaspassedaninstanceofWavewhichisinsideStrictMode.Instead,addarefdirectlytotheeleme…

    2022年6月10日
    30
  • JS 数组转字符串的4种方法

    JS 数组转字符串的4种方法前言 在项目过程中 我们会有很多情况会遇到我们拿到的的是一个数组的情况 但是后台可能需要的是一个以 分割的字符串 那我们有哪些方法进行转换呢 1 我们首先 for 循环这个数组 将需要的值加 拼接起一个字符串 这个时候的字符串会以 结尾 我们再用 substring 对这个字符串进行截取去掉最后的那个 得到想要的值 2 toString 方法能够把每个元素转换为字符串 然后以逗号连接输出显示 JavaScript 会以迭代的方式调用 toString 方法把所有数组都转换为字符串

    2026年3月19日
    1
  • 短信验证

    短信验证

    2022年3月12日
    75
  • JAVA多线程中join()方法的详细分析

    JAVA多线程中join()方法的详细分析虽然关于讨论线程join()方法的博客已经非常极其特别多了,但是前几天我有一个困惑却没有能够得到详细解释,就是当系统中正在运行多个线程时,join()到底是暂停了哪些线程,大部分博客给的例子看起来都像是t.join()方法会使所有线程都暂停并等待t的执行完毕。当然,这也是因为我对多线程中的各种方法和同步的概念都理解的不是很透彻。通过看别人的分析和自己的实践之后终于想明白了,详细解释一下希望能帮助到…

    2022年4月28日
    39
  • 奔图打印机显示未连接_打印机无法打印的10种解决方法

    奔图打印机显示未连接_打印机无法打印的10种解决方法一、使打印机处于联机状态。如果打印机没有处于联机状态,自然是无法打印了。二、重新开启打印机。如果打印机处于联机状态仍无法打印文档,此时你可以重新开启打印机,不仅清除了打印机内存,还能解决不少的打印故障。三、将打印机设置为默认打印机。步骤如下:1.单击Windows“开始”菜单,指向“设置”,单击“打印机”,打开“打印机”窗口。2.右键单击打印机图标,系统弹出快捷菜单,单击其中的“设为默认值”。四、…

    2022年6月3日
    292

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号