我有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