說我已經有一個靜態的工廠方法,像這樣一類:內部工廠的靜態工廠方法網關 - 代碼異味?
public class Table
{
public static Table OpenTable(string path)
{
ITableFactory fac = IoC.Resolve<ITableFactory>();
return fac.OpenTable(path);
}
}
和工廠類,看起來像這樣:
internal class TableFactory : ITableFactory
{
internal Table OpenTable(string path)
{
//Check the path
//Do some other stuff
//return a new Table.
}
}
這段代碼臭到你?
編輯:另一個問題:是否有一個靜態方法的類型只是轉發調用工廠是一個好主意?
一些背景資料:我曾經有過TableFactory公共和使用戶創建一個新的每次他們需要打開一個表格的時間,但感覺就像一個很長的大廳只開一臺。所以我認爲我會在Table類上創建一個靜態工廠方法,並使工廠類成爲內部類,並使用IoC來解決它。
這將是一個小小的問題,如果您決定在第一次調用OpenTable之後的某段時間在運行時切換依賴關係。因爲它沒有靜態的構造函數,所以它也可能不會確定性地存在instantiate fac。 – 2009-06-22 10:14:14