OO大原则

2.1 OO原则综述

2.1.1 引言

         好的设计,成就好的作品:僵化的设计,则会使你的作品大打折扣。在软件领域更是如此。Bob大叔在其《敏捷软件开发——原则、模式与实践》一书的序言中就讲到“美的东西比丑的东西创建起来更廉价,也更快捷。”可见追求美好的软件设计不光是代码优雅的问题,更关乎生产成本。对于软件架构的研究经历了很长时间的摸索,在面向过程到面向对象,从设计原则到设计模式,对于如何设计更好软件的探索,从未停止。技术大师总结了很多设计上的经典法则,后来者可以站在巨人的肩膀上尽情享受丰富而珍贵的经验。

         在第1章“OO大智慧”中,我们分析和讨论了面向对象技术的基本要素,对继承、封装、多态和接口等进行了基本的讨论,如何将这些基本技术应用的得心应手,是本章要阐释的问题和目标。面向对象的原则也正是如何使用继承、封装、多态和接口技术进行优良设计的原则总结和规律认识,因此这两掌的内容相辅相成,互为补充。

2.1.2 原则综述

         本章将重点讲述最基本的5个设计原则,分别是:单一职责原则、开放封闭原则、依赖倒置原则、接口隔离原则和Liskov替换原则,在表2-1中列出了主要的一些面向对象设计原则及其简单描述,详细的分析将在本章各节逐步展开。

2-1 设计原则

设计原则

英文表达

说明

单一职责原则

SRPSingle Responsibility Principle

一个类,应该仅有一个引起它变化的原因,不要将变化原因不同的职责封装在一起,而应该隔离。

开放封闭原则

OCPOpen Closed Principle

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

依赖倒置原则

DIPDependency Inversion Principle

依赖了抽象,而不要依赖于具体,因为抽象相对稳定

接口隔离原则

ISPInterface Segregation Principle

尽量应用专门的接口,而不是单一的总接口,接口应该面向用户,将依赖建立在最小的接口上

Liskov替换原则

LSPLiskov Substitution Pinciple

子类必须能够替换其基类

合成/聚合复用原则

CARPComposite/Aggregate Reuse Principle

在新对象中聚合已有对象,使之成为新对象的成员,从而通过操作这些对象达到复用的目的。合成方式较继承方式耦合更松散,所以应该少继承、多聚合

迪米特法则

LoDLaw of Demeter

又叫最小知识原则,指软件实体应该尽可能少的和其他软件实体发生相互作用

在本书中,我们只对前5大原则进行系统论述,关于合成/聚合复用原则,在1.2节“什么是继承”中已经有相关的论述。

原文地址:https://www.cnblogs.com/Leo_wl/p/1748601.html