我见过少数情况下,.NET Framework 提供了工厂版本的方法,例如:
对比
我们如何选择使用哪一种以及哪一种更好?
在这种情况下,正如 Scott Chamberlain 在评论中所说,提供 DataCacheFactory 作为创建或获取默认 DataCache 对象的一种方式。由于缺少 DataCache 公共构造函数,此类没有其他方法。
但是,在某些情况下,您确实可以选择。举个System.Threading.Task
例子。您可以使用构造函数或使用 TaskFactory 创建。
在某些情况下提供两者的原因是工厂可以更有用。工厂可以为您提供具有某些有用属性集的预先创建的对象。这可以使您不必在每次需要新对象时都指定它们。
例如:使用 Task 类,您可以执行以下操作:
var task = new Task(yourAction);
或者,您可以按如下方式创建 TaskFactory:
var taskFactory = new TaskFactory(yourCancellationToken);
当你打电话时:
var task = taskFactory.StartNew(yourAction);
您创建的任务是:
使用 TaskFactory,您无需创建任务,然后填充所有这些属性,然后自己启动任务。工厂为你做。
您使用 DataCacheFactory 创建 DataCache 对象。没有两难选择——同时使用它们。
这两件事不是相互排斥的——你需要同时使用它们。您正在看到工厂模式。