【发布时间】:2014-05-10 02:33:46
【问题描述】:
所以我在一次采访中被要求重构这段代码
有一个Shape 抽象类。 Square、Rectangle 是 Shape 的派生类。 Square 和 Rectangle 覆盖 Shape 的方法 area()。现在我该如何重构这样的代码?
if(object is of type Square) {
//call area on square
} else if (object is of type Rectangle) {
//call area of rectangle
} else if(object of type Cube) {
// call volume of cube
}...
.
.
.
问题基本上是如何避免多个 if 条件,因为可能有很多派生类并在该对象上调用适当的方法?
【问题讨论】:
-
Cube来自哪里?它与其他类型有什么关系? -
你的例子很模糊。
-
Cube 也可以从 Shape 派生。覆盖区域以给出立方体的体积。
-
那么“体积”是一种不同的方法还是“面积”方法?因为这可能是一个简单的多态案例:只需在传递的任何形状上调用
area(),您不必查看确切的实现。 -
反对者。请评论您的期望。我会回答以使其更清楚。
标签: oop