我正在爲使用不同類型的零件(C#)構建機器人的程序提供解決方案。 在這種情況下,我有兩種類型共享某些屬性,並且這兩種類型的部件都從抽象類Part繼承。使用參數更正工廠方法的實現
到目前爲止,我從我的界面窗口中的實際按鈕代碼調用新的,這是這樣的。
if (type == acuatic)
Part pieceA = new AcuaticPart(type,name,price,maxDepth);
else
Part pieceB = new TerrestrialPart(type,name,price,terrain,maxTemp);
我知道這是完全錯誤的設計,我應該實施工廠方法。問題是我不知道這是否是好的,只是所有的參數發送到工廠這樣的:
在界面窗口:
Part piece = _partFactory.CreatePart(type,name,price,maxDepth,terrain,maxTemp);
在混凝土廠
:
public class ConcretePartFactory : PartFactory
{
public override Part CreatePart(type,name,price,maxDepth,terrain,maxTemp)
{
Part myPart = default(Part);
switch (type)
{
case "actuatic":
myPart = new AquaticPart(type,name,price,maxDepth);
break;
case "terrestrial":
myPart = new TerrestrialPart(type,name,price,terrain,maxTemp);
break;
}
return myPart;
}
}
事情是我仍然必須通過所有的屬性,我認爲這不是遵循開放/封閉的原則,我能做些什麼來解決這個問題?謝謝!
assignign myPart = default(myPart)應該是您的case語句的默認值。 – CSharpie