|
Post by account_disabled on Dec 30, 2023 9:02:02 GMT
作为参数它接收个包含几何图形对象的数组然后在后续迭代步骤中计算每个对象的面积。然后它将接收到的值添加到结果中然后返回结果。下面是所用形状的简单实现矩形和三角形。 该代码可以工作并实现其目的即计算收到的数字的总和。不幸的是它写得不好。切都很好直到您需要向应用程序添加新形状例如梯形。让我们看看在这种情况下会发生什么。程序中下个类的实现可能如下所示。 新类的构造函数将梯形的底长和高度作为参数而 返回图形的各个尺寸。 不幸的是这并不是需要对代码进行的唯更改。需要修改 方法使其计的结果中。 需要修改上述方法意味着它不符合所讨论的原则。这是因为向程序添加新功能在本例中是另个几何图形是通过更改它来完成的而不仅仅是通过编写新代码即 类来完成。因此 方法对于添加下个形状是开 C级联系人列表 放的并且应该对其关闭。下面是满足开闭原则的正确代码。 为了改进代码进行了些更改。计算几何图形面积的职责已委托给各个类而 方法仅使用 方法检索此面积。 为了实现这点有必要创建个 来实现所有形状以计算并返回其面积。 当引入更多数字时 方法将不需要任何更改。新类实现 接口就足够了。由于多态性的使用满足了开闭原则。 没有变化? 根据开闭原则代码单元应该禁止修改开放扩展。这是否意味着不能对上例中所示的 方法进行任何更改?点也不。这里有必要澄清下代码禁止修改意味着什么。不是什么变化而是定程度的变化。在上面的例子中这样的区域正在添加新的数字。这意味着如果我们实现个新的图形我们不需要修改 方法。
|
|