面向对象设计原则

面向对象设计原则

面向对象设计原则概述

  1. 单一职责原则
  2. 开闭原则
  3. 里氏代换原则
  4. 依赖倒转原则
  5. 接口隔离原则
  6. 合成复用原则
  7. 迪米特法则

软件的可维护性和可复用性

             知名软件大师Robert C.Martin认为一个可维护性(Maintainability) 较低的软件设计,通常由于如下4个原因造成

  1. 过于僵硬(Rigidity) 
  2. 过于脆弱(Fragility) 
  3. 复用率低(Immobility) 
  4. 黏度过高(Viscosity) 

      软件工程和建模大师Peter Coad认为,一个好的系统设计应该具备如下三个性质:

  1. 可扩展性(Extensibility) 
  2. 灵活性(Flexibility)
  3. 可插入性(Pluggability)

  1. 软件的复用(Reuse)或重用拥有众多优点,如可以提高软件的开发效率,提高软件质量,节约开发成本,恰当的复用还可以改善系统的可维护性。
  2. 面向对象设计复用的目标在于实现支持可维护性的复用。 
  3. 在面向对象的设计里面,可维护性复用都是以面向对象设计原则为基础的,这些设计原则首先都是复用的原则,遵循这些设计原则可以有效地提高系统的复用性,同时提高系统的可维护性。 
  4. 面向对象设计原则和设计模式也是对系统进行合理重构的指南针,重构(Refactoring)是在不改变软件现有功能的基础上,通过调整程序代码改善软件的质量、性能,使其程序的设计模式和架构更趋合理,提高软件的扩展性和维护性。 
常用的面向对象设计原则包括7个,这些原则并不是孤立存在的,它们相互依赖相互补充。
设计原则名称 设计原则简介 重要性
单一职责原则
(Single Responsibility Principle, SRP)
类的职责要单一,不能将太多的职责放在一个类中 ★★★★☆
开闭原则
(Open-Closed Principle, OCP)
软件实体对扩展是开放的,但对修改是关闭的,即在不修改一
个软件实体的基础上去扩展其功能
★★★★★
里氏代换原则
(Liskov Substitution Principle, LSP)
在软件系统中,一个可以接受基类对象的地方必然可以接受一个子类对象 ★★★★☆
依赖倒转原则
(Dependency Inversion Principle, DIP)
要针对抽象层编程,而不要针对具体类编程 ★★★★★
接口隔离原则
(Interface Segregation Principle, ISP)
使用多个专门的接口来取代一个统一的接口 ★★☆☆☆ 
合成复用原则
(Composite Reuse Principle, CRP)
在系统中应该尽量多使用组合和聚合关联关系,尽量少使用甚
至不使用继承关系
★★★★☆
迪米特法则
(Law of Demeter, LoD)
一个软件实体对其他实体的引用越少越好,或者说如果两个类
不必彼此直接通信,那么这两个类就不应当发生直接的相互作
用,而是通过引入一个第三者发生间接交互
★★★☆☆



你可能感兴趣的:(面向对象,设计,软件,面向对象设计原则)