2010-04-13 53 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');