学习笔记 : 面向对象的设计原则

概述

软件的可维护性( Maintainability )和可复用性( Reusability )是两个非常重要的用于衡量软件质量的属性,软件的可维护性是指软件能够被理解,改正,适应及扩展的难以程度,软件的可复用性是指软件能够被重复使用的难易程度. 面向对象设计原则也是后续设计模式学习的基础,每一个设计模式都符合某一个或多个面向对象设计原则,面向对象原则是用于评价一个设计模式的使用效果的重要指标之一. 通过在软件中使用这些原则可以提高软件的可维护性和可复用性.

  • 设计模式是在特定环境下为解决某一通用软件设计问题提供的一套制定的解决方案,该方案描述了对象和类之间的相互作用

单一职责原则

单一职责原则 : 一个对象应该只包含单一的职责,并且该职责被完整地封在一个类中

  • Single Responsibility Principle( SRP ) : Every object should have a single responsibility,and that responsibility should be entirely encapsulated by the calss.

开闭原则

开闭原则 : 软件实体应当对外扩展开放,对修改关闭

  • Open-Closed Principle( OCP ) : Software entities should be open for extension,but closed for modification.

里氏代换原则

里氏代换原则 : 所有引用基类的地方必须能够透明地使用其子类的对象

  • Liskov Substitution Principle( LSP ) : Functions that use pointers or references to base classes must be able to use objects of derived classes without knowing it.

依赖倒转原则

依赖倒转原则 : 高层模块不应该依赖底层模块,它们都应该依赖抽. 抽象不应该依赖于细节,细节应该依赖于抽象

  • Dependence Inversion Principle( DIP ) : High level modules should not depend upon low level modules,both should depend upon abstractions. Abstractions should not depend upon details,details should depend upon abstractions.

接口隔离原则

接口隔离原则 : 客户端不应该依赖那些它不需要的接口

  • Interface Segregation Principle( ISP ) : Clients should not be forced to depend upon interfaces that they do not use.

合成复用原则

合成复用原则 : 优先使用对象组合,而不是通过继承来达到复用的目的

  • Composite Reuse Principle(CRP) : Favor composition of objects over inheritance as reuse mechanism.

迪米特法则

迪米特法则 : 每一个软件单位对其他单位都只有最少的知识,而且仅限于那些与本单位密切相关的软件单位

  • Law of Demeter( LoD ) : Each unit should have only limited knowledge about other units : only units “closely” related to the current unit.

摘自书籍 《Java设计模式 - 刘伟编著》