我有3个不同类型的形状图表说Rectangle
,Cube
,Circle
,我想为它们定义,使得面向对象设计/设计模式的情况下
所有类的类将有标题& Color属性/方法,
圈&矩形将有更多的方法区,
同样竟被魔方d有Volume方法而不是Area方法。
有我在其中得到“对象”的参考方法,下面是示例方法
public void ShapeClicked(object obj)
{
// Check the type of obj & type cast it accordingly & call the method on that object
object obj = new Circle();
if (obj is Circle)
{
Circle circleObj = (Circle)obj;
circleObj.GetArea();
}
else if (obj is Rectangle)
{
Rectangle rectangleObj = (Rectangle)obj;
rectangleObj.GetArea();
}
else if (obj is Cube)
{
Cube cubeObj = (Cube)obj;
cubeObj.GetVolume();
}
}
我如何设计我的班,使得“ShapeClicked(obj对象)”方法
一)我不必每次检查的类型(应该在运行时发生),(这对我来说很重要,因为我有很多方法,如“ShapeCli cked”这需要我核对型号)
B)如果对象是圆的话,那就只能得到区域的方法,同样的立方体对象,将只能得到体积法。
我能想到的把所有的方法在基类&在派生类才覆盖所需的方法&性质两种方法
。创建一个工厂方法/类,它将返回基类的引用。通过这种方法,我的'b'要求不符合
仅在基类&中添加常用方法/属性(如颜色),以便在派生类中添加其他方法。这并不能解决#A :(
可有人建议我一些解决方案,解决了这两个#A#B &
这是真正的代码还是只是一个任意的样本?现在你的示例是从形状中获取一个数字,但是你没有显示你用它做了什么。 – tcarvin 2012-01-06 14:00:39