面向对象设计基本原则

设计之殇

软件设计的最大天敌是变化, 这里的变化并不仅仅指的是需求的变化,人员的变化等具体某一领域的变化,而是一种宏观上的表述,所有不确定的都可以认为是变化。为了提升复用性,抵御变化,人们根据建筑领域的经验,将长期软件开发中的一些经典设计提炼为一套方法论,取名为设计模式。

设计模式

设计模式的一般定义如下: 设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结,使用设计模式是为了可重用代码、让代码更容易被他人理解并且保证代码可靠性。

牛顿曾经说过:“我之所以看得远,是因为站在巨人的肩上”。设计模式的出现可以让我们站在前人的肩膀上,通过一些成熟的设计方案来指导新项目的开发和设计,以便于我们开发出具有更好的灵活性和可扩展性,也更易于复用的软件系统。

面向对象设计基本原则为支持可维护性复用性而诞生。它们是从众多设计模式中总结出的指导原则。同时也是评价一个设计模式的重要指标。因此学习好这些基本原则对于掌握设计模式非常重要。

基本原则

1.依赖倒置原则(Dependence Inversion Principle,简称DIP)

  • 高层模块不应该依赖于低层模块,二者都应该依赖与抽象(稳定)。
  • 抽象(稳定)不应该依赖于实现细节(变化),实现细节应该依赖于抽象(稳定)。

2.开放封闭原则(Open Close Principle,简称OCP)

  • 对扩展开放,对更改封闭。
  • 类模块应该是可扩展的,但是不可修改。

3.单一职责原则(Single Responsibility Principle,简称SRP)

  • 一个类应该仅有一个引起它变化的原因。
  • 类的职责应该单一。

4.Liskov替换原则(Liskov Substitution Principle,简称LSP)

  • 子类必须能够替换它们的基类。

5.接口隔离原则(Interface Segregation Principle,简称ISP)

  • 接口小而完备。
  • 不应该强迫客户程序依赖它们不用的方法。

6.迪米特法则(Law of Demeter,简称LoD)

  • 一个软件实体应当尽可能少地与其他实体发生相互作用

总结

最后总结一下如何去遵守这些原则。对这些原则的遵守并不是是和否的问题,而是多和少的问题,也就是说,我们一般不会说有没有遵守,而是说遵守程度的多少。任何事都是过犹不及,设计模式也是一样,制定这些原则的目的并不是要我们刻板的遵守他们,而需要根据实际情况灵活运用。对他们的遵守程度只要在一个合理的范围内,就算是良好的设计。切记具体问题具体分析

猜你喜欢

转载自blog.csdn.net/cl2010abc/article/details/80474515