我在應用程序中有一些代碼,我現在不太感到興奮。我創建了一些類,像這樣:基於字符串屬性根據一些標準創建不同的類型
class Base
{
// base properties ...
}
class DerivedA : Base
{
}
class DerivedB : Base
{
}
我在我的應用程序,需要創建這些對象之一(有更多的驚喜在未來)的方法存儲在數據庫中。這些對象中的每一個從稍微不同的地方獲取數據,但如果顯得塊,它不很維護我這樣做是正確的,現在的方式是隻是一個大:
class BaseCreator
{
Base Create(string name)
{
if (name == "DerivedA")
return CreateDerivedA();
else if(name == "DerivedB")
return CreateDerivedB();
}
}
有什麼辦法我可以重構此代碼以使其更易於維護,並且可以更輕鬆地在將來添加新類型?我在我的應用程序中使用依賴注入(Ninject),如果這有什麼區別的話。
我從未見過超過十二種類型被添加,但您能提供一個您的意思的例子。我沒有看到我將它轉換爲使用DI容器和基於字符串構造對象之間的明顯聯繫。 – 2012-02-10 20:57:37
轉換應該是從一個類到一個接口的基礎。每種類型的Base都可以實現這個接口,並且這允許這些實現和合約(在你的情況下爲Base)可以根據接口的需求進行管理。字符串,使枚舉或更少的錯誤容易。讓您的DI容器將類型(基於您的新枚舉)綁定到基礎合同,並讓DI容器解析返回您的目標界面。 – OnResolve 2012-02-10 21:04:23
該字符串存儲在數據庫中。 – 2012-02-10 21:11:25