例子中这样的区域正在添
该代码可以工作并实现其目的即计算收到的数字的总和。不幸的是它写得不好。切都很好直到您需要向应用程序添加新形状例如梯形。让我们看看在这种情况下会发生什么。程序中下个类的实现可能如下所示。 新类的构造函数将梯形的底长和高度作为参数而 返回图形的各个尺寸。不幸的是这并不是需要对代码进行的唯更改。需要修改 方法使其计算梯形的面积并将其添加到返回的结果中。 需要修改上述方法意味着它不符合所讨论的原则。这是因为向程序添加新功能在本例中是另个几何图形是通过更改它来完成的而不仅仅是通过编写新代码即 类来完成。因此 方法对于添加下个形状是开放的并且应该对其关闭。下面是满足开闭原则的正确代码。 为了改进代码进行了些更改。计算几何图形面积的职责已委托给各个类而 方法仅使用 方法检索此面积。为了实现这点有必要创建个 来实现所有形状以计算并返回其面积。 当引入更多数字 克罗地亚电话号码列表 时 方法将不需要任何更改。新类实现 接口就足够了。由于多态性的使用满足了开闭原则。 没有变化? 根据开闭原则代码单元应该禁止修改开放扩展。这是否意味着不能对上例中所示的 方法进行任何更改?点也不。
https://static.wixstatic.com/media/79f9bb_0665332165ca48e188271dbf2111c1e6~mv2.jpg/v1/fill/w_700,h_340,al_c,lg_1,q_80,enc_auto/79f9bb_0665332165ca48e188271dbf2111c1e6~mv2.jpg
这里有必要澄清下代码禁止修改意味着什么。不是什么变化而是定程度的变化。在上面的加新的数字。这意味着如果我们实现个新的图形我们不需要修改 方法。 让我们想象种情况需要修改程序使其计算接收到的图形的面积总和但仅计算面积大于 平方单位的图形。该方法并未禁止此类修改因此在这种情况下您可以更改它甚至必须更改它否则将无法实现新功能。 这段代码当然可以工作但它不是正确的解决方案。对大于 个平方单位的字段进行求和的要求可能会发生变化例如仅添加矩形。
頁:
[1]