`
housheng33
  • 浏览: 236433 次
  • 性别: 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个特征来确定我们数据...

    工业设计在环境保护中的作用.pdf

    工业设计在环境保护中发挥着至关重要的作用,它不仅关乎产品的制造和使用,更关乎人们的生活方式和整个社会的可持续发展。以下将详细阐述工业设计在环境保护中的五个关键方面。 首先,材料选择是工业设计环保实践的...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    互联网设计平台分析.pdf

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

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

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

    电子商务系统的设计.ppt

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

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

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

Global site tag (gtag.js) - Google Analytics