设计模式基本原则

1.  单一职责原则(Single Responsibility Principle, SRP):一个类只负责一个功能领域中的相应职责,或者可以定义为:就一个类而言,应该只有一个引起它变化的原因。


        单一职责原则告诉我们:一个类不能太“累”!在软件系统中,一个类(大到模块,小到方法)承担的职责越多,它被复用的可能性就越小,而且一个类承担的职责过多,就相当于将这些职责耦合在一起,当其中一个职责变化时,可能会影响其他职责的运作,因此要将这些职责进行分离,将不同的职责封装在不同的类中,即将不同的变化原因封装在不同的类中,如果多个职责总是同时发生改变则可将它们封装在同一类中。 单一职责原则是实现高内聚、低耦合的指导方针,它是最简单但又最难运用的原则,需要设计人员发现类的不同职责并将其分离,而发现类的多重职责需要设计人员具有较强的分析设计能力和相关实践经验。

  2 . 开闭原则(Open-Closed Principle, OCP):一个软件实体应当对扩展开放,对修改关闭。即软件实体应尽量在不修改原有代码的情况下进行扩展。 

也就是说类的改动应该是通过扩展代码来实现而不是修改源代码。   




        3. 里氏代换原则(Liskov Substitution Principle, LSP):所有引用基类(父类)的地方必须能透明地使用其子类的对象。

里氏代换原则告诉我们,在软件中将一个基类对象替换成它的子类对象,程序将不会产生任何错误和异常,反过来则不成立,如果一个软件实体使用的是一个子类对象的话,那么它不一定能够使用基类对象。例如:我喜欢动物,那我一定喜欢狗,因为狗是动物的子类;但是我喜欢狗,不能据此断定我喜欢动物,因为我并不喜欢老鼠,虽然它也是动物。

里氏代换原则是实现开闭原则的重要方式之一,由于使用基类对象的地方都可以使用子类对象,因此在程序中尽量使用基类类型来对对象进行定义,而在运行时再确定其子类类型,用子类对象来替换父类对象

  4依赖倒转原则(Dependency Inversion Principle, DIP):抽象不应该依赖于细节,细节应当依赖于抽象。换言之,要针对接口编程,而不是针对实现编程。

依赖于抽象(接口),而不依赖于具体实现(类),针对接口编程。框架和实现层向中间层(协议层/抽象层)靠拢

 5接口隔离原则(Interface Segregation Principle, ISP):使用多个专门的接口,而不使用单一的总接口,即客户端不应该依赖那些它不需要的接口。

根据接口隔离原则,当一个接口太大时,我们需要将它分割成一些更细小的接口,使用该接口的客户端仅需知道与之相关的方法即可。每一个接口应该承担一种相对独立的角色,不干不该干的事,该干的事都要干。这里的“接口”往往有两种不同的含义:一种是指一个类型所具有的方法特征的集合,仅仅是一种逻辑上的抽象;另外一种是指某种语言具体的“接口”定义,有严格的定义和结构,比如Java语言中的interface.


6. 迪米特法则(Law of Demeter, LoD):一个软件实体应当尽可能少地与其他实体发生相互作用。


        一个对象应当对其他对象尽可能少的了解,从而降低各个对象之间的耦合,提高系统系统的可维护性。例如一个程序中,各个模块之间相互调用通常会提供一个统一的接口来实现,这样其他模块不需要了解另外一个模块的内部实现细节,这样当一个模块内部的实现发生改变时,不会影响其他模块的使用(黑盒原理)。

时间: 2024-10-17 21:30:02

设计模式基本原则的相关文章

java设计模式 -------- 基本原则

本文是自己学习所做笔记,欢迎转载,但请注明出处:http://blog.csdn.net/jesson20121020 在看设计模式的基本原则之前,先来看下一些基本的面向对象知识. 1. 面向对象思想的建立: 面向的对象的三原则,即继承,封装和多态,那么这些又是如何定义,又如何区分呢? 封装  :  隐藏实现的一些细节,提供一种公开的访问方式. eg. private可以把一些成员变量和成员方法给隐藏起来. 继承  :  可以具备某些已经存在的功能. 多态  :  对象在不同时刻体现不同的优势.

Java设计模式基本原则

设计模式六大原则 总原则: 开闭原则(Open Close Principle) 开闭原则:对扩展开放,对修改关闭.即为了程序的扩展性好,易于维护和升级,我们需要使用接口和抽象类. 1.单一职责原则 不要存在多于一个导致类变更的原因,也就是说每个类应该实现单一的职责,如若不然,就应该把类拆分 2.里氏替换原则(Liskov Substitution Principle) 里氏替换原则(Liskov Substitution Principle)面向对象设计的基本原则之一.里氏替换原则中说,任何基

设计模式-基本原则

学习一样东西,我们首先要知道为什么要学这个,或者说这个东西能起到什么作用.这样才能更加有目的.有效率地进行学习. 然后再问为什么这个东西能实现这样的效果,从而了解其内部的机制. 最后,再弄清楚怎么使用,这样才算真正学会了. 换而言之,把要学习的技能比喻成实现某一功能的函数,那么了解函数的功能.函数的具体实现以及函数的调用方法,就算懂得了这个函数. 一.为什么要学设计模式? 学习设计模式是为了提高软件代码的健壮性.可修改性和扩展性.提高开发的效率.方便程序员设计时的互相交流.个人觉得,首要的是扩展

2设计模式基本原则

最终目的:高内聚,低耦合 1)  开放封闭原则  (OCP,Open For Extension, Closed For Modification Principle) 类的改动是通过增加代码进行的,而不是修改源代码. 2)  单一职责原则  (SRP,Single Responsibility Principle) 类的职责要单一,对外只提供一种功能,而引起类变化的原因都应该只有一个. 3)   依赖倒置原则 (DIP,Dependence Inversion Principle) 依赖于抽象

设计模式笔记——设计模式原则总结

设计模式基本原则总结 1.单一职责原则(SRP) 就一个类而言,应该仅有一个引起它变化的原因. 2.开放--封闭原则 是说软件实体(类.模块.函数等等)应该能够扩展,可是不可改动.意思是对于扩展是开放的(Open For extension).对于更改是封闭的(Closed for modification) 3.依赖转换原则 a.高层模块不应该依赖低层模块.两个都应该依赖抽象.b.抽象不应该依赖细节. 细节应该依赖抽象. 4.里氏代换原则 子类型必须可以替换掉它们的父类型. 5.迪米特法则--

面向对象设计模式5大基本原则

"宇宙万物之中,没有一样东西能像思想那么顽固."        一爱默生 首先明确模式是针对面向对象的,它的三大特性,封装.继承.多态. 面向对象设计模式有5大基本原则:单一职责原则.开发封闭原则.依赖倒置原则.接口隔离原则.Liskov替换原则. 而设计模式都是在面向对象的特性以及5大基本原则的基础上衍生而来的具体实现. 1.单一职责原则(SRP): 1.1,SRP(Single Responsibilities Principle)的定义:就一个类而言,应该仅有一个引起它变化的原因

设计模式中基本原则

有很多设计模式,基本上都是围绕着下面几种原则来设计的. 1.开放封闭原则:软件实体(类,模块,函数等等)应该是可以扩展的,但是不可以修改. 即:对于扩展是开放的,对于更改时封闭的. 面对需求,对程序的改动是通过增加新的代码来进行的,而不是更改现有的代码. 开发人员应该对程序中呈现出频繁变化的那些部分作出抽象. 2:依赖倒转原则:抽象不应该依赖细节,细节应该依赖抽象:换句话说,就是要针对接口编程,不要针对实现编程. 3:里氏代换原则:子类必须能够替换掉他们的父类.换句话说,一个软件实体如果使用的是

设计模式六大基本原则

Javascript是一种基于对象(object-based)的语言,你遇到的所有东西几乎都是对象.但是,它又不是一种真正的面向对象编程(OOP)语言,因为它的语法中没有class(类). 那么,如果我们要把"属性"(property)和"方法"(method),封装成一个对象,甚至要从原型对象生成一个实例对象,我们应该怎么做呢? 一. 生成对象的原始模式 假定我们把猫看成一个对象,它有"名字"和"颜色"两个属性. var C

大话设计模式1:初识设计模式及设计模式五大基本原则

一什么是设计模式? 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计 模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 毫无疑问,设计模式于己于他人于系统都是多 赢的:设计模式使代码编制真正工程化:设计模式是软件工程的基石脉络,如同大厦的结构一样. 二为什么要使用设计模式? 为什么要提倡Design Pattern呢?根本原因是为了代码复用,增加可维护性.那么怎么才能实现代码复用呢?面 向对象有几个原则:单一职责原