`

OO的复用原则

阅读更多
最近在看java设计模式,想对OO的服用原则稍微终结下.
OO的复用设计原则有 :OCP,DIP,LSP,ISP,CARP,LoD。
充分利用这些原则可以提高软件的复用性

1.开闭原则 OCP(Open-Closed Princple):很简单,一句话:“Closed for Modification; Open for Extension”——“对变更关闭;对扩展开放”。如果从另外一个角度来讲就是"对可变性的封装原则(Principle of Encapsulation of Variation 或者EVP )"
EVP 意味着两点:
(1)一种可变性不应当散落在代码的很多角落里,应该设计在一个对象里面.
(2)一种可变性不应当与另一种可变性混合在一起.

2.里氏替换原则 LSP “Inheritance should ensure that any property proved about supertype objects also holds for subtype objects.”——“继承必须确保超类所拥有的性质在子类中仍然成立.
强调子类一定要严格拥有父类的所以特征,比如鸟类和企鹅,鸟类有个fly()方法,但企鹅不会飞.这将使得鸟类的特征在企鹅中不成立了,违反了LSP原则.

3.依赖倒置原则(Dependency Inversion Princple)DIP 
依赖倒置(Dependence Inversion Principle)原则讲的是:要依赖于抽象,不要依赖于具体。Spring 的IOC就是充分利用了这个原则.
简单的说,依赖倒置原则要求客户端依赖于抽象耦合。原则表述:
抽象不应当依赖于细节;细节应当依赖于抽象;
要针对接口编程,不针对实现编程。

4.ISP(Interface Segregation )接口隔离原则
接口隔离原则讲的就是同一个角色提供宽、窄不同的接口,以对付不同的客户端。比如同一台洗衣机,我可以专门用它来洗衣服,也可以将自己洗好的衣服甩干.而每个功能都是提供的不同的按扭,这些按扭就相当于我们讲的接口.

5.组合/聚合复用原则 CARP(Composition/Aggregation Princple) 合成/聚合原则将的是,要尽量使用合成/聚合,而不是使用继承关系达到复用的目的.它和LSP是相辅相成的,两者都是对OCP的实现的具体方法.

6.迪米特法则 LoD(Law of Demeter) 一个软件实体应该与尽可能少的实体发生相互作用,是一条通向OCP原则的道路.
分享到:
评论

相关推荐

    OO设计原则 -- OO设计的 DIP依赖倒置原则

    ### OO设计原则 -- OO设计的 DIP依赖倒置原则 #### 概述 在软件工程领域,特别是面向对象设计中,依赖倒置原则(Dependency Inversion Principle, DIP)是六大设计原则之一,由著名软件架构师Robert C. Martin提出...

    OO设计原则-里氏替换原则

    ### OO设计原则——里氏替换原则详解 #### 一、引言 面向对象设计原则(Object-Oriented Design Principles)是一套指导软件开发者如何更好地设计类、接口等面向对象元素的原则集合,旨在提高代码的可复用性、可...

    OO设计原则总结

    - 遵守DRY原则可以确保代码的易于维护和复用,同时减少潜在的错误和冗余。 - 通过确保每个需求和功能只在一个地方实现,可以避免不必要的代码复制,从而使系统更加简洁高效。 - 将相关信息和行为集中在一个单一且...

    OO设计原则总结.doc

    ### OO设计原则精要解析 #### 封装变化:Encapsulate what varies 在软件设计中,变化是不可避免的。封装变化原则强调将系统中易变的部分与不变的部分分离,通过封装变动点,使得系统其他部分不受其影响,从而保持...

    java oo 设计原则

    遵循此原则,可以减少代码冗余,提高代码的复用性和一致性。当需要修改功能时,只需要在一个地方进行修改,降低了出错的可能性,也便于后期维护。 3. 开闭原则(Open-Closed Principle, OCP) OCP指出,软件实体(类...

    面向对象编程,OO设计的五大原则

    这种方式使得新功能的添加不会影响到原有代码,降低了维护成本并提高了代码的复用性。 ### 里氏替换原则(LSP) **定义**:所有引用基类的地方必须能透明地使用其子类的对象。换句话说,任何基类出现的地方,子类...

    OO设计五个原则.pdf

    5. **组合/聚合复用原则**(Composite/Aggregate Reuse Principle,简称CARP):优先使用对象组合或聚合,而非继承来实现复用。这样可以减少继承带来的耦合性问题,同时保持系统的灵活性。 #### 实践中的挑战与解决...

    OO设计根本的指导原则

    ### OO设计根本的指导原则 面向对象(Object-Oriented,简称OO)设计是软件工程领域内一种重要的设计理念,它通过模拟现实世界中的对象及其相互作用来构建软件系统。为了确保设计的质量,遵循一系列的设计原则至关...

    浅谈java中OO的概念和设计原则(必看)

    浅谈java中OO的概念和设计原则...* 合成/聚合复用原则:尽量使用合成/聚合,尽量不要使用继承。 理解OO的概念和设计原则是Java开发者的必备技能,掌握这些知识能够帮助开发者设计出更加健壮、灵活、可维护的软件系统。

    资 料OOCSS

    例如,`velocity-download`可能是一个与文件下载相关的模块,它遵循OOCSS原则,可能包含结构类(如`.download-grid`)和表现类(如`.download-button`),以及状态类(如`.is-active`或`.is-hover`)。 总的来说,...

    面向对象设计原则解析

    6. **合成/聚合复用原则(Composition/Aggregation Reuse Principle, CARP)** 宁愿使用对象的组合或聚合,而非继承来实现代码的复用。组合与聚合允许动态地改变对象结构,相比继承更加灵活,且不会破坏封装性。 ...

    OO方法、RUP与UML建模(讲义)

    OO方法,全称为面向对象的方法,是一种以对象为中心的软件开发方法论,它结合了数据和操作这些数据的函数,通过抽象、封装、模块化和分层等原则,以提高软件的可维护性和复用性。面向对象分析(OOA)和面向对象设计...

    VB转换VB.net手顺的oo4o方面

    这包括将功能模块封装成类和对象,使用继承、多态等面向对象的设计原则来构建软件系统。 3. **迁移策略和步骤** 在将VB代码迁移到***的过程中,开发者需要遵循一定的策略和步骤。首先,应该对现有VB应用程序进行...

    OO Primer (OO principles, essentials)

    通过遵循这些原则,可以显著减少代码冗余、提高代码复用率,并使得系统更加易于理解和修改。 #### 二、面向对象设计的原则 ##### 1. 封装(Encapsulation) 封装是指将数据及其操作数据的方法捆绑在一起的过程,...

    OO思维

    封装是OOP的核心原则之一,它限制了对象内部数据的直接访问,只允许通过特定的接口(公有方法)进行操作。这样可以保护数据免受外部代码的不当修改,提高程序的健壮性和可维护性。例如,我们可以通过设置getter和...

    面向对象设计原则和设计模式的概念

    合成/聚合复用原则提倡使用对象的组合或聚合而非继承来达到复用的目的。这种方法可以避免继承带来的问题,如紧耦合和多继承的复杂性。例如,如果需要设计一个“汽车”类,可以通过组合“发动机”、“轮子”等部件...

    实战OO 部署与实施

    根据给定的信息,“实战OO部署与实施”这一主题聚焦于面向对象(Object-Oriented,简称OO)系统在实际环境中的部署与实施过程。面向对象技术是软件开发领域的重要组成部分,它强调通过模拟现实世界中的对象及其交互...

    剖析设计模式与设计原则

    总之,设计模式和设计原则是软件工程的重要组成部分,它们提供了可复用的解决方案和指导方针,帮助我们在面对复杂问题时做出明智的选择。通过深入研究“OO Principles Explained译文.pdf”,我们可以进一步巩固这些...

    面向对象的设计原则 doc

    #### 四、合成/聚合复用原则(Composite Reuse Principle, CRP) **定义**:该原则提倡使用对象组合而非继承来进行代码复用。通过组合多个对象来构建复杂的对象,而不是通过继承来重用已有对象的功能。 **实践意义...

    java设计模式之面向对象的思想(think in OO(Object Oriented))

    在实际项目中,结合面向对象的设计原则(如单一职责原则、开闭原则、里氏替换原则、依赖倒置原则等),我们可以构建出高效、高质量的软件系统。学习并熟练掌握这些设计模式,对于提升Java程序员的专业素养至关重要。

Global site tag (gtag.js) - Google Analytics