工廠模式通常爲具體類創建基類,然後從該基類繼承具體類。對於很多應用程序,我們需要知道這個工廠可以創建的具體類的數量。例如,工廠,創建典型形狀的對象(圓的,矩形的等),C#代碼下面的例子:如何從工廠模式中獲取具體類的數量?
public class ShapeFactory
{
public IShape GetShape(int shapeIndex)
{
IShape s = null;
const int color = 1;
const int thickness = 5;
switch (shapeIndex)
{
case 1: s = new Square(color, thickness);
break;
case 2: s = new Triangle(thickness);
break;
case 3: s = new Circle(color);
break;
}
return s;
}
}
用戶可能想要知道有多少種形狀的由程序的支持。我知道有兩種方法可以做到這一點:
- 將數字設置爲工廠類中的一個常量,並使其對公衆可見 。缺點是每次添加新的圖形時,都必須手動增加圖形的數量。
- 創建一個動態容器(C#中的List),其中包含工廠可以創建的具體對象的所有實例 。優點是 ,即使添加了新的Shape類,它也可以自動計算出它可以創建的形狀數量 。缺點是 顯而易見,每種形狀都必須與 一起創建形狀請求!
這樣做的最好方法是什麼?關於這個特定主題的任何最佳實踐?
這種工廠的預期公共接口是什麼?你能顯示一些代碼嗎? –
你能舉一個例子,你什麼時候需要知道工廠可以創建的具體類的數量? – adv12
@YacoubMassad,請參閱編輯。 – james