面向对象的基本原则----

1.开闭原则(Open Closed Principe OCP)

  OCP是面向对象设计中“可复用这几”的基石,是面向对象设计中最重要的原则之一。对于扩展是开发的,对于修改是关闭的,这意味着模块的行为是可以扩展的。当应用的需求改变时,我们可以对模块进行扩展,使其具有满足那些改变的新行为。也就是说我们可以改变模块的功能。对于模块行为扩展时,不必改动模块的源代码。

  后面提到的里氏替换原则(LSP)、依赖倒转原则(DIP)、接口隔离原则(ISP)以及抽象类(Abstract)、接口(Interface)等等,都可以看作是开闭原则的实现方法。

2.里氏替换原则(Liskov Substitution Principle LSP)

  任何基类可出现的地方,子类一定可以出现。LSP是继承复用的基石,只有当衍生类可以替换掉基类,软件单位的功能不受影响时,基类才能真正被复用,而衍生类也能够在基类的基础上增加新的行为。里氏替换原则是对“开-闭”原则的补充。实现“开-闭”原则的关键步骤就是抽象化。而基类与子类的继承关系就是抽象化的具体实现。所以里氏替换原则就是对实现抽象化的具体步骤的规范。

  如果违反了LSP设计,那么根据具体的情况可以在下面的两种方案中选择一种。

  -----创建一个新的抽象类C,作为两个具体类的超类,将A,B的共同行为移动到C中来解决问题。

  -----集成关系改为委派关系。

3.依赖倒置原则(Dependence Inversion Principle)

  A.高层次的模块不应该依赖于低层次的模块,他们都应该依赖于抽象。

  B.抽象不应该依赖于具体实现,具体实现应该依赖于抽象。

  依赖倒置原则:是程序要依赖于抽象接口,不要依赖于具体实现。简单的说就是要对抽象进行飙车,不要对实现进行编程。这样就降低了客户与实现模块之间的耦合。

4.接口隔离原则(Interface Segregation Principle)

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

  使用多个专门的接口比使用单一的总接口要好。

原文地址:https://www.cnblogs.com/Nico-luo/p/8624702.html