2010-04-13 51 views
2

您能否提供有關利用工廠(方法)模式的實踐經驗? 而你獲得的好處很大。您使用工廠(方法)模式的實際案例以及收益

謝謝。

+0

你問的是工廠方法模式或工廠模式? – 2010-04-13 09:57:40

+0

@Mark:都是。他們的目標相似,不是嗎? – Ricky 2010-04-15 06:56:50

+1

不是。 **工廠方法**和**抽象工廠**都或多或少具有相同的目標,即將創建與使用分開並實現鬆散耦合。相反,**工廠**模式或多或少只是描述了一個便利課程,而國際海事組織並不是非常有用。 – 2010-04-15 10:06:29

回答

1

.Net System.Data.Common.DbProviderFactory類可用於編寫與數據庫無關的代碼。

var factory = DbProviderFactories.GetFactory(/* here you put provider name, e.g. taken from config */); 
using (var connection = factory.CreateConnection()) 
using (var command = connection.CreateCommand()) 
{ 
    connection.ConnectionString = /* some connection string, e.g. from config */; 
    command.CommandText = /* some query */; 
    command.ExecuteNonQuery(); 
} 

就像這樣。

1

這種模式在OO框架中非常流行。它的使用是因爲它使框架能夠控制對象的創建。然後,您可以將它用於各種各樣的事情,緩存對象,使用它來強制使用單例,錯誤檢查(您請求的對象是否存在?),日誌記錄以及在某人實例化類時想要發生的其他任何事情。

作爲一個副作用,它也使良好的代碼。例如,在PHP,而不是

$person = new Person(); 
$person->setName('Mike'); 

你可以做

$person = $this->load('Person')->setName('Mike');