`

设计中的六大原则

 
阅读更多
设计的六大原则:
(1)开闭原则
对于一切程序,都应该是对修改关闭,对扩展开放的。怎样才能做到开闭原则呢,关键是在于抽象,抽象的目的就在于找出不变点,封装变化点,那么这样就能实现开闭了。
但是这只是一种理想的情况,在任何时候,都不可能做到完全的符合开闭原则,因为开闭一定只能是某一个抽象角度的开闭,那么换一个抽象角度,那么当前选择的开闭的角度就有可能成为障碍。难道就只能靠预测抽象的角度么,不太靠谱。所以个人觉得只有在明显的看到变化点的时候,才会去进行这样的抽象,否则就会引起不必要的复杂性的臭味。
(2)依赖倒转原则
细节应该依赖于抽象,抽象不应该依赖于细节。
这话怎么说呢,只能说接口与其客户之间的依赖关系,远远强于接口与其实现者之间的依赖关系。
(3)李氏代换原则
表述:对于任意类A的对象o1,都存在任意类B的对象o2,在所有使用到o1的地方,都能够用o2代替,而不会对客户产生任何影响,那么就可以说B是A的子类。
怎样验证是否符合李氏代换原则?
子类与父类直接的关系,就是所谓的is-a的关系。但是这里的is-a是行为上的is-a的关系。
同样的父子关系,需要放到某一个上下文中去看,才能判断出这样的关系是否违背的李氏代换原则。
那么什么是不同的上下文呢,其实也就是说,类的不同的行为,某一些行为,可能会使这样的关系违背李氏代换原则。那么这个时候我们应该怎么办呢,可以有一个办法就是抽象出父子类的不违背李氏代原则的行为,组成一个新的超类,然后原来的两个类就由父子关系变成了兄弟关系。
还有一种方便判断是否符合李氏代换原则的方法,就是使用契约式编程。设定了前置条件与后置条件。那么子类覆盖的方法,那么就必须要有跟宽松的前置条件和更严格的后置条件,稍微思考一下就知道原因是什么。
对于可能有不符合李氏代换原则的一些代码现象。
有一个很明显的现象就是子类提供了一种退化了的方法。
(4)接口隔离法则
首先要说的一件事情就是接口跟谁的联系更紧密一些呢,是接口的使用者还是接口的实现者,很明显,是接口的使用者,他们之间的关联关系远远紧密与接口与其实现者之间的关系。那么这个时候,先有接口后有实现,那么情况就比较明显了,从客户使用的角度来说,接口天然是隔离的,没啥好说的的。
而多个接口,最终可能只有一个实现者,这是很正常的。
(5)单一职责原则
既然是单一职责原则,那么不得不弄清楚的就是,什么是职责,怎样才能划分出不同的职责。
其实就是不同的抽象角度,不同的抽象角度决定了不同组的职责,而每一个抽象角度决定了每一个变化的维度,那么多组职责糅合在一起的时候,会发生什么变化呢,就会使本来不需要受到影响的客户受到了无辜的影响,这个很致命。所以说,单一职责原则,还是需要遵循的。但是职责的划分,没有什么定例,个人决定全凭个人决定的抽象角度。
(6)迪米特法则
这个法则又称最小知识原则,举个例子,A依赖于B,B依赖于C,A依赖于C,那么这个时候就可以断开A与C的依赖关系,通过将行为委托给B,然后A只会依赖于B,这个时候就将A与C解耦了。如果遵循这个原则,那么最后的依赖关系图就成为了一个树状结构,相当的理想。
分享到:
评论

相关推荐

    设计模式之六大原则详解,Markdown笔记

    详细介绍了设计模式六大原则,配有示例代码和图片,有开闭原则,单一职责原则,里氏替换原则,依赖倒置原则,接口隔离原则,迪米特法则等等。

    设计模式六大原则与类的六种关系

    设计模式六大原则是软件设计中遵循的一些基本原则,目的是为了使软件设计更加灵活、可维护和可扩展。六大原则分别是:单一职责原则、里氏替换原则、依赖倒置原则、接口隔离原则、迪米特法则和开闭原则。 1. 单一...

    php 设计模式六大原则

    php 设计模式六大原则 单一职责原则 里氏替换原则 依赖倒置原则 接口隔离原则 迪米特法则 开闭原则 word版

    六大设计原则总结

    六大设计原则是我们在项目实施的过程中要求项目管理者和开发者都必须要参考的原则。

    设计模式六大原则详解 经典

    在这篇文章中,我们将深入探讨设计模式的六大原则,这些原则是理解并有效应用设计模式的基础。 首先,我们要了解“开-闭”原则(Open-Closed Principle,OCP)。这个原则指出,一个软件实体(如类、模块或函数)...

    设计模式六大原则.doc

    设计模式六大原则是软件开发中不可或缺的指导方针,它们旨在提升代码的可维护性、可扩展性和可重用性。以下是对这些原则的详细解释: 1. 单一职责原则(Single Responsibility Principle, SRP): 这个原则强调一个...

    JAVA设计模式六大原则详细讲解(面向对象语言通用)

    1.单一职责原则: 不要存在多于一个导致类变更的原因 ...接口隔离原则告诉我们在设计接口的时候要精简单一;迪米特法则告诉我们要降低耦合。而开闭原则是总纲,他告诉我们要对扩展开放,对修改关闭。

    java面向对象设计的六大原则

    ### Java面向对象设计的六大原则 在Java编程中,面向对象设计的原则对于构建高质量、可维护、可扩展的软件系统至关重要。以下将详细介绍面向对象设计的六大原则:单一职责原则(Single Responsibility Principle, ...

    六大设计原则,一些小例子(通俗易懂)

    下面将详细阐述这六大设计原则及其重要性,并通过一些简单易懂的例子来帮助理解。 1. 单一职责原则(Single Responsibility Principle, SRP) 这个原则指出,一个类或模块应该只有一个改变的原因。这意味着一个类...

    面向对象六大设计原则

    1、“开-闭”原则(Open-Closed Principle,OCP) 2、里氏替换原则(Liskov Substitution Principle,LSP) 3、依赖倒置原则(Dependence Inversion Principle,DIP) 4、接口隔离原则(Interface Separate ...

    设计六原则在PPT设计中的应用.rar

    设计六原则在PPT设计中的...理论类的文章却是比较少的,而设计理论恰是帮助提高射鸡师的设计水平,突破瓶颈的最强激素,所以我专门去翻译了一下(翻译的同时加入了自己的理解)这六大原则和它的实现方法,并分享给大家

    23种设计模式和设计模式六大原则

    文档为23种设计模式中的15种设计模式和设计模式六大原则,里面写的某种模式的优缺点,适用场景,具体代码,注意事项,典型应用。具体写的挺好,希望能帮助你。

    设计模式六大原则(1):单一职责原则

    本文将深入探讨这六大原则中的第一个——单一职责原则(Single Responsibility Principle, SRP),并结合AcountYear.java这个文件名来解析该原则的应用。 单一职责原则指出,一个类或者一个模块应该只有一个引起它...

Global site tag (gtag.js) - Google Analytics