August 2021
Intermediate to advanced
450 pages
4h 46m
Chinese
单一职责原则(SRP)指出,修改类只能有一个理由。程序中的每个类和模块都应专注于单个任务。因此,请勿将因不同原因而改变的方法放在同一类中。如果该类的描述中包含单词“and”(和),则你可能违反了SRP。换句话说,每个模块或类都应该对软件提供的功能的单个部分负责,并且该职责应该完全封装在类中。
创建形状层次结构是继承的经典例证之一。它经常被用作教学示例,在本章(以及本书)中,我经常使用它。在此示例中,Circle类继承自抽象Shape类。Shape类提供了一个称为calcArea()的抽象方法,作为子类的契约。从Shape继承的任何类都必须提供自己的calcArea()实现:
在该示例中,Circle类继承自Shape类,并且根据要求提供了calcArea()方法的实现:
小心
在此示例中,我们将引入Circle类以专注于“单一职责原则”,并使该示例尽可能简单。
第三个类叫作CalculateAreas,可以计算一个Shape数组内所有不同形状的面积之和。Shape数组长度不限,可以包含不同的形状,比如矩形和三角形。
注意CalculateAreas类也处理了应用程序的输出,这是有问题的。计算面积的行为和输出行为是耦合的,因为它们在同一个类中。
Read now
Unlock full access