面向对象设计原则概述

一个好的系统设计一般具有如下三个性质:可扩展性、灵活性、可插入性。

常用的面向对象设计原则包括7个:分别为单一职责原则、开闭原则、里氏代换原则、依赖倒转原则、接口隔离原则、合成复用原则、迪米特法则

  • 单一职责原则(Single Responsibility Principle):一个对象应该只包含单一的职责,并且该职责被完整的封装在一个类中。

    一个类承担的责任越多,他被复用的可能性越小。类的职责包括数据职责(属性)和行为职责(方法)两部分,单一职责原则是实现高内聚,低耦合的指导方针。

  • 开闭原则(Open-Closed Principle,OCP):一个软件的实体应该对扩展开放,对修改关闭。也就是说在设计一个板块的时候,应当是这个板块可以在不被修改的前提下被扩展,及实现在不修改源代码的情况下改变这个模块的行为。

 

  • 里氏代换原则(Liskov Substitution Principle,LSP):如果对于每一个类型S的对象o1,都有类型为T的对象o2,使得以T定义的所有程序P在所有的对象o1窦代换成o2时,程序P的行为没有变化,那么类型S是类型T的子类型(所有引用父类的地方必须能透明地使用其子类对象)

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

 

  • 依赖倒转原则(Depeddence Inversion Principle,DIP):高层模块不应该依赖底层模块,他们应该依赖抽象。抽象不应该依赖于细节,细节应该依赖于抽象。(用针对接口编程,不要针对实现编程)。简单来说,依赖倒转原则就是指代码要依赖于抽象的类,而不要依赖于具体的类;要针对接口或抽象类编程而不是针对具体类编程。
  • 接口隔离原则(Interface Segregation Principle,ISP):客户端不应该依赖那些它不需要的接口。(一旦一个接口太大,则需要将他分割成一些更细小的接口,是该接口的客户端仅需知道与之相关的方法即可)
  • 合成服用原则(Composite Reuse Priciple,CRP):又称为组合/聚合复用原则,尽量使用对象组合,而不是继承来达到服用的目的。即尽量使用组合/聚合关系,少用继承关系。
  • 迪米特法则(Law of Demeter,LoD)又称最少知识原则有以下几种典型的定义:把不要和陌生人说话。至于你的直接朋友通信。每一个软件单位对其他的单位都只有最少的知识,而且局限晕啊写与本单位密切相关的软件单位。简单来说,迪米特法则就是指一个软件实体应当尽量少的与其他实体发生相互作用。

  

 

posted @ 2021-11-26 22:24  见怪见外  阅读(96)  评论(0编辑  收藏  举报