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

转载自:设计模式从零到一 之六大原则
http://www.taidous.com/thread-46535-1-1.html

(出处: 【泰斗社区】-专注互联网游戏和应用的开发者平台)





一、单一职责原则(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、面向对象开发的要求


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值