Design patterns 您使用工厂(方法)模式的实际案例及其好处

Design patterns 您使用工厂(方法)模式的实际案例及其好处,design-patterns,Design Patterns,您能否提供利用工厂(方法)模式的实践? 你得到了很大的好处 谢谢。.Net System.Data.Common.DbProviderFactory类可用于编写与DB无关的代码 var factory = DbProviderFactories.GetFactory(/* here you put provider name, e.g. taken from config */); using (var connection = factory.CreateConnection()) using

您能否提供利用工厂(方法)模式的实践? 你得到了很大的好处


谢谢。

.Net System.Data.Common.DbProviderFactory类可用于编写与DB无关的代码

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();
}

类似这样的情况。

这种模式在OO框架中非常普遍。之所以使用它,是因为它使框架能够控制对象的创建。然后,您可以将它用于各种事情,缓存对象,使用它强制单例,错误检查(您请求的对象是否存在?),日志记录,以及在有人实例化类时您希望发生的任何事情

作为一种副作用,它还可以生成漂亮的代码。例如,使用PHP而不是

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

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

你是在问工厂方法模式还是工厂模式?@Mark:两者都有。他们有着相似的目标,不是吗?不是真的。工厂方法和抽象工厂或多或少都有相同的目标,即将创建和使用分开,并启用松散耦合。相反,工厂模式或多或少只是描述了一个便利类,在我看来,它不是很有用。