码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式从零到一之六大原则

时间:2017-01-19 19:19:11      阅读:198      评论:0      收藏:0      [点我收藏+]

标签:面向对象设计   类型   文件   blank   接口设计   nbsp   lsp   重用   执行   

     一、单一职责原则(Single Responsibility Principe)简称是SRP。

     单一职责原则的好处:

     1、类的复杂性降低,实现什么职责都有清晰明确的定义;

     2、可读性提高,复杂性降低,那当然可读性就提高了;

     3、可维护性提高,可读性提高,那当然就更容易维护了;

     4、变更引起的危险降低,变更是必不可少的,如果接口的单一职责做得好,一个接口修改只对相应的实现类有影响,对其他的接口无影响,这对系统的扩展性,维护性都有非常大的帮助。

     单一职责原则提出了一个编写程序的标准,用“职责”或“变化原因”来衡量接口或类设计得是否优良,但是“职责”和“变化原因”都是不可 度量的,因项目而异、因环境而异;

 

    二、里氏替换原则(Liskov Substitution Principle)简称LSP:

    定义:如果对每一个类型为S的对象o1,都有类型为T的对象o2,使得以T定义的所有程序P在所有的对象o1都替换成o2时,程序P的行为没有发生变化,那么类型S是类型T的子类型。通俗点讲,就是只要父类能出现的地方子类就可以出现,而且替换为子类也不会产生任何错误或异常,使用者可能根本就不需要知道是父类还是子类。但是,反过来就不行,有子类出现的地方,父类未必就能适应。

   里氏替换原则的好处:

   1、代码共享、减少创建类的工作量,每个子类都拥有父类的方法和属性;

   2、提高代码的重用性;

   3、子类可以类似父类,但又异于父类;

   4、提高代码的扩展性;

   5、提高产品或项目的开放性;

   缺点:

   1、继承是侵入性的,只要继承,就必须拥有父类的所有属性和方法;

   2、降低代码的灵活性。子类必须拥有父类的属性和方法,让子类自由的世界中多了些约束;

   3、增加了耦合性。当父类的变量、常量和方法被修改时,必须要考虑子类的修改,而且在缺乏规范的环境下,珍重修改可能带来非常糟糕的结果——大片的代码需要重构。

 

    三、依赖倒置原则(Dependence Inversion Principle)简称:DIP:

    定义:模块间的依赖通过抽象发生,实现类之间不发生直接的依赖关系,其依赖关系是通过接口或抽象类产生的;接口或抽象类不依赖实现类,但实现类依赖于接口或抽象类。

    依赖倒置原则的优点:

    1、可以减少类之间的耦合性;

    2、提高系统的稳定性;

    3、降低并行开发引起的风险;

    4、提高代码的可读性和可维护性;

如何写:

   1、每个类尽量都有接口或者抽象类,或者接口和抽象类两者都具备

   2、变量的表面类型尽量是接口或者抽象类

   3、任何类都不应该从具体类派生

   4、尽量不要覆写基类的方法

   5、结合里氏替换原则使用

 

四、接口隔离原则(Interface Segregation Principle)简称:ISP

   定义:客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。

   接口隔离原则的优点:

    1、原则意义上的好处:接口如果能够保持粒度够小,就能保证它足够稳定。

   2、使用多个专门的接口还能够体现对象的层次,因为我们可以通过接口的继承,实现对总接口的定义。

   接口隔离原则是对接口进行规范约束 ,主要包含以下4层意思:接口要尽量小、接口要高内聚、定制服务、接口设计是有限度的。

 

五 、迪米特法则(Law Of Demeter)也称为最少知识法则(Least Konwledge Principle) 简称:LKP

    定义:一个对象应该对其他对象有最少的了解。通俗的来讲,一个类应该对自己需要耦合或调用的类知道的最少,你(被耦合或调用的类)的内部是如何复杂都和我没关系,那是你的事情,我就知道你提供的这么多Public方法,我就调用这么多,其他的我一概不管。

    迪米特法则的优点:类间解耦,弱耦合,只有弱耦合了以后,类的复用性才可以提高。

    缺点:产生大量的中转或者跳转类,导致系统的复杂性提高,增加了维护难度。

 

六、开闭原则(Open Closed Principle)简称:OCP

     开闭原则(OCP)是面向对象设计中“可复用设计”的基石,是面向对象设计中最重要的原则之一,其它很多的设计原则都是实现开闭原则的一种手段。对于扩展是开放的,对于修改是关闭的,这意味着模块的行为是可以扩展的。当应用的需求改变时,我们可以对模块进行扩展,使其具有满足那些改变的新行为。也就是说,我们可以改变模块的功能。对模块行为进行扩展时,不必改动模块的源代码或者二进制代码。模块的二进制可执行版本,无论是可链接的库、DLL或者.EXE文件,都无需改动。

   开闭原则的优点:

   1、提高复用性

   2、提高可维护性

   3、面向对象开发的要求

 

好了,这一章就写到这,欢迎大家加入QQ群:280993838 。或者关注我的公众号:技术分享

设计模式从零到一之六大原则

标签:面向对象设计   类型   文件   blank   接口设计   nbsp   lsp   重用   执行   

原文地址:http://www.cnblogs.com/Zander-1349547081/p/6307630.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!