虽然您提供的示例在技术上是一种工厂方法,但它并不是很有用。设计模式只有在它们可以简化目标应用程序/功能的开发时才有用。
通常,工厂方法实现的好处来自:
- 标准化对象的创建逻辑
- 为对象构造提供语义上有意义的接口
目前尚不清楚不带参数的实例方法如何可能比默认构造函数增加好处。
查看Wikipedia Factory Method 文章中的 C# 示例。(复制+粘贴在下面)
public class Complex
{
public double real;
public double imaginary;
public static Complex FromCartesianFactory(double real, double imaginary)
{
return new Complex(real, imaginary);
}
public static Complex FromPolarFactory(double modulus, double angle)
{
return new Complex(modulus * Math.Cos(angle), modulus * Math.Sin(angle));
}
private Complex(double real, double imaginary)
{
this.real = real;
this.imaginary = imaginary;
}
}
Complex product = Complex.FromPolarFactory(1, Math.PI);
它很有用,因为它指定了两个工厂方法,每个方法都有明确定义的参数,以及对如何使用这些参数来构造定义明确的对象的有效实例的明确解释。此外,构造函数 isprivate
和工厂方法 is static
,这确保构造该对象的实例的唯一方法是使用工厂方法。虽然它并不特别适用于这个例子(因为所有可能的double
参数值都是有效的),但将验证逻辑也放在工厂方法或构造函数中是有意义的。
一般来说,工厂方法的目的是通过封装对象构造来降低代码复杂性,目前尚不清楚您提供的示例将如何实现该目标。