张德长

导航

面向对象设计7大原则-中英双语(表格)-程序员必背

 

  • 软件的可维护性(Maintainability)和可复用性(Reusability)是衡量软件质量的两个重要属性;
  • 可维护性:软件能够被理解、改正、适应、扩展的难易程度;
  • 可复用性:软件能够被重复使用的难易程度;
  • 面向对象设计的目标在于支持可维护性复用,一方面需要实现设计方案或者源代码的复用,另一方面需要确保系统能够易于扩展和修改,具有良好的可维护性;
  • 面向对象设计原则为支持可维护性复用而诞生,这些原则蕴含在很多设计模式中,它们是从许多设计方案中总结出的指导性原则;
  • 面向对象设计原则是学习设计模式的基础,每一个设计模式都符合一个或者多个面向对象设计原则,面向对象设计原则是用于评价一个设计模式的使用效果的重要指标;

设计原则名称

定义Definition

使用频率

单一职责原则SRP

Single Responsibility Principle

定义一:一个对象应该只包含单一的职责,而且该职责被完整的封装到一个类中;Every object should have a single responsibility,and that responsibility should be entirely encapsulated by the class;

定义二:就一个类而言,应该只有一个引起它变化的原因;

There should never be more than one reason for a class to change;

★★★★

开闭原则OCP

Open Closed Principe

软件实体应该对扩展开放,对修改关闭;

Software entities should be open for extension,but closed for modification;

在不修改源代码的情况下,实现功能扩展;

★★★★★

里氏替换原则LSP

Liskov Substitution Principle

所有引用基类的地方必须能够透明的使用其子类对象;

Functions that use pointer or references to base classes must be able to use objects of derived classes without knowing it;

引用基类(抽象类、接口)使程序更容易扩展;

芭芭拉·利斯科夫(Barbara Liskov),美国计算机科学家,2008年图灵奖得主,2004年约翰·冯诺依曼奖得主。

★★★★★

依赖倒置原则DIP

Dependency Inversion Principle

高层模块不应依赖低层模块,他们都应该依赖抽象;抽象不应该依赖细节,细节应该依赖抽象;

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;

针对抽象进行编程,而将具体类的对象通过依赖注入的方式注入到所依赖的对象;

★★★★★

接口隔离原则ISP

Interface Separation Principle

客户端不应该依赖那些它不需要的接口;

Clients should not be forced to depend upon interfaces that they do not use;

用小的专用接口替换大的通用接口;

★★

合成复用原则CRP

Composite Reuse Principle

优先使用对象组合,而不是继承,来达到目的;

Favor composition of objects over inheritance as a reuse mechanism;

通过组合或聚合对已有对象进行的复用称为“黑箱”复用,相对继承关系而言,耦合度相对较低;

★★★★

迪米特法则LOD

Law of Demeter

每一个软件单位对其他的单位都只有最少的知识,而且局限于那些与本单位密切相关的软件单位;

Each unit should have only limited knowledge about other units:only units “closed” related to current unit;

迪米特法则来自1987年美国东北大学一个“Demeter”研究项目;迪米特法则也叫最少知识原则(Least Knowledge Principle,LKP);

★★★

posted on 2022-03-31 12:36  张德长  阅读(60)  评论(0编辑  收藏  举报