`
housheng33
  • 浏览: 239272 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

“面向对象设计5大原则”和良性依赖原则在应付变化方面的作用

 
阅读更多

“面向对象设计5大原则”和良性依赖原则在应付变化方面的作用:
单一职责原则(Single-Responsibility Principle)。“对一个类而言,应该仅有一个引起它变化的原因”。本原则是我们非常熟悉地“高内聚性原则”的引申,但是通过将“职责”极具创意地定义为“变化的原因”,使得本原则极具可操作性,尽显大师风范。同时,本原则还揭示了内聚性和耦合性是“一物两面”的关系,为了降低耦合性,基本途径就是提高内聚性;如果一个类承担的职责过多,那么这些职责就会相互依赖,一个职责的变化可能会影响另一个职责的履行。其实OOD的实质,就是合理地进行类的职责分配。

开放封闭原则(Open-Closed Principle)。“软件实体应该是可以扩展的,但是不可修改”。本原则紧紧围绕变化展开,变化来临时,如果不必改动软件实体的源代码,就能扩充它的行为,那么这个软件实体的设计就是满足开放封闭原则的。如果我们预测到某种变化,或者某种变化发生了,我们应当创建抽象来隔离以后发生的同类变化。在Java中,这种抽象指抽象基类或接口;在C++中,这种抽象是指抽象基类或纯抽象基类。当然,没有对所有情况都贴切的模型,我们必须对软件实体应该面对的变化做出选择。

Liskov替换原则(Liskov-Substitution Principle)。“子类型必须能够替换掉它们的基类型”。本原则和开放封闭原则关系密切,正是子类型的可替换性,才使得使用基类型的模块无需修改就可扩充。Liskov替换原则从基于契约的设计演化而来,契约通过为每个方法声明“先验条件”和“后验条件”;定义子类时,必须遵守这些“先验条件”和“后验条件”。当前,基于契约的设计发展势头正劲,对实现“软件工厂”的“组装生产”梦想是一个有力的支持。

依赖倒置原则(Dependency-Inversion Principle)。“抽象不应依赖于细节,细节应该依赖于抽象”。本原则几乎就是软件设计的正本清源之道。因为人解决问题的思考过程是先抽象后具体,从笼统到细节的,所以我们先生产出的势必是抽象程度比较高的实体,而后才是更加细节化的实体。于是,“细节依赖于抽象”就意味着后来的依赖于先前的,这是自然而然的重用之道。而且,抽象的实体代表着笼而统之的认识,人们总是比较容易正确认识它们,而且它们本身也是不易变的,依赖于它们是安全的。依赖倒置原则适应了人类认识过程的规律,是面向对象设计的标志所在。

接口隔离原则(Interface-Segregation Principle)。“多个专用接口优于一个单一的通用接口”。本原则是单一职责原则用于接口设计的自然结果。一个接口应该保证,实现该接口的实例对象可以只呈现为单一的角色;这样,当某个客户程序的要求发生变化,而迫使接口发生改变时,影响到其他客户程序的可能性最小。

良性依赖原则。“不会在实际中造成危害的依赖关系,都是良性依赖”。通过分析不难发现,本原则的核心思想是“务实”,很好地揭示了极限编程(Extreme Programming)中“简单设计”和“重构”的理论基础。本原则可以帮助我们抵御“面向对象设计5大原则”以及设计模式的诱惑,以免陷入过度设计(Over-engineering)的尴尬境地,带来不必要的复杂性
分享到:
评论

相关推荐

    面向对象基本原则 面向对象基本原则

    良性依赖原则强调:“不会在实际中造成危害的依赖关系,都是良性依赖。”这一原则鼓励我们在设计系统时采取实用主义的态度,避免过度设计,同时也要警惕那些可能会在未来带来问题的依赖关系。通过识别哪些依赖是安全...

    安卓良性样本apk,爬虫爬取共20w个最新的正常良性apk

    在移动应用开发领域,尤其是在安全研究和测试中,了解和分析良性Android应用程序(简称apk)是至关重要的。安卓apk是Android应用的安装包,它包含了所有必要的资源、代码和元数据,使得应用能在Android设备上运行。...

    良性和恶性肿瘤数据集合

    良性和恶性肿瘤数据 570个癌细胞和30个特征来确定我们数据中的癌细胞是良性还是恶性 我们的癌症数据包含两种类型的癌症:1。良性癌症(B)和2。恶性肿瘤(M)。 良性和恶性肿瘤数据 570个癌细胞和30个特征来确定我们数据...

    某集团组织结构设计的基本思路与原则.pptx

    协信集团作为一家快速发展的企业,其组织结构设计需遵循一定的基本思路和原则,以应对市场变化和企业发展的挑战。 **A. 协信集团战略评估分析** 协信集团的战略评估表明,集团设定了极具挑战性的战略目标,包括...

    人工智能和机器学习在工业设计中的赋能.pptx

    ### 人工智能和机器学习在工业设计中的赋能 #### 一、计算机辅助设计与智能建模的融合 在工业设计领域,计算机辅助设计(CAD)与智能建模技术的结合正引领着一场革命性的变革。这一融合的核心在于利用人工智能(AI...

    精益思想5项基本原则.docx

    精益思想的 5 项基本原则是由 Womack 和 Jones 在《精益思想》中总结出的,成为全部踏上精益道路的组织不厌其繁地理解和实行的基本原则。这些原则是:正确的确定价值、识别价值流、流淌、拉动、尽善尽美。 1. 正确...

    面向深层学习的计算机网络课程优化设计.pdf

    在实践环节方面,计算机网络课程设置基础性实验和综合性网络编程实验。在基础实验中,可以设计网络数据包捕获和分析实验、网络设计和配置实验以及简单网络编程实验。学生通过实验可以加深对计算机网络基础理论和协议...

    薪酬系统设计的基本原则概述.pptx

    以下是薪酬系统设计的一些基本原则和关键概念: 1. **竞争原则**:薪酬系统需具有竞争力,以吸引和保留优秀人才。这涉及到对外部公平的关注,即薪酬水平应与同行业、同地区的市场标准保持一致或略高,确保企业在...

    基于WEB人才招聘管理信息系统的设计实现分析.doc

    在系统设计思想方面,需要强调的是遵循有效性、可靠性和安全性原则。有效性原则要求系统必须具备满足用户需求的功能,并且具有易于操作的特性。可靠性原则则要求系统设计必须能够确保网络和软硬件的合理优化,从而...

    良性前列腺增生用药公司(行业)薪酬管理制度方案-薪酬设计方案资料文集系列.docx

    《良性前列腺增生用药公司薪酬管理制度方案》是一个详尽的文档,旨在规范并优化公司在薪酬管理方面的各项政策。这份方案涵盖了薪酬设计的多个关键方面,包括薪酬结构、任职薪金、绩效奖金、津贴与补助、福利、薪酬...

    教学科研咨询的良性互动.pdf

    综上所述,教学、科研和咨询服务在IT行业的良性互动是一个持续的、动态的过程,它们相互依赖、相互促进,共同推动着信息技术的创新和发展。只有保持这种互动,我们才能在快速变化的信息时代保持竞争力,不断创造出更...

    重构:改善既有代码的设计

    此外,书中还强调了良好的设计原则和模式,如单一职责原则(SRP)、开闭原则(OCP)、依赖倒置原则(DIP)等。这些原则有助于创建易于理解、扩展和维护的代码。同时,书中也涵盖了如何识别和处理代码坏味道,比如长...

    高职教育中校企合作的原则与模式-最新教育文档.doc

    本文将深入探讨高职教育校企合作的五大基本原则与几种常见合作模式,并分析其在推动职业教育发展中的意义与作用。 五大基本原则是高职教育校企合作的核心,它们共同构建了一个互惠互利、良性循环的合作体系。服务...

    互联网设计平台分析.pdf

    互联网设计平台是互联网与设计行业相结合的产物,它在设计理念、模式、用户体验等方面都带来了创新性的改变。本文通过对互联网设计平台的深入分析,揭示了其必要性、发展模式以及对设计行业良性发展的推动作用。 ...

    教学设计的作用.doc

    教师通过精心设计的教学活动,能够有效促进学生认知与能力的发展,同时也能有效应对教育领域的不断变化和挑战。因此,教育工作者必须重视教学设计,不断深化对教学设计理论与实践的认识和应用,以期达到教育改革和...

    策略深度报告:什么是房地产业的良性循环.pdf

    为了防止房地产市场过热和金融风险的积累,政府对房地产行业的融资进行了收紧,这体现在应付票据与应付账款同比增速加快,反映了开发商面临的资金压力增大。在这种背景下,快周转战略的可持续性受到挑战,行业需要...

    电子商务系统的设计.ppt

    本文将深入探讨电子商务系统的设计,以KFC(肯德基)的电子商务系统为例,从多个方面阐述其设计原则、系统结构、信息基础设施和软件平台选择,以及应用软件的设计策略。 首先,企业电子商务系统设计遵循一系列原则...

    创业企业激励机制设计的战略性原则.ppt

    5. **系统性原则**:激励机制设计应体现整体性、层次性和开放性。整体性强调部门与个人之间的利益协调,层次性意味着不同层级的员工有不同的激励方式,开放性则意味着激励机制需要随企业发展动态调整。 6. **稳定性...

Global site tag (gtag.js) - Google Analytics