Design patterns 优选工厂方法实现
我可以通过以下方式实现Factory方法: 方法1:Design patterns 优选工厂方法实现,design-patterns,Design Patterns,我可以通过以下方式实现Factory方法: 方法1: class A { } class A1:A { } class A2:A { } static class Factory { public static A GetInstance(int i) { if (i == 1) return new A1(); else if (i == 2) retur
class A
{
}
class A1:A
{
}
class A2:A
{
}
static class Factory
{
public static A GetInstance(int i)
{
if (i == 1)
return new A1();
else if (i == 2)
return new A2();
else
return null;
}
}
方法2:
class Factory
{
abstract A CreateA();
}
class Factory1 : Factory
{
public A CreateA()
{
return new A1();
}
}
class Factory2 : Factory
{
public A CreateA()
{
return new A1();
}
}
哪种方法更好?
这些方法的优点/缺点是什么?
请告诉我最好的方法。如果您遵循第一种方法,那么如果您将来需要创建一个新类型,比如说,
A3
,那么您需要修改GetInstance
方法来为A3
编写创建代码。这违反了—
如果遵循第二种方法,则不需要修改现有代码。您可以通过以下方式轻松合并新类型-
class Factory3 : Factory
{
public A CreateA()
{
return new A3();
}
}
这样,您就不需要修改现有代码
选择您认为适合您的用例的方法。没有更好的方法。它们有不同的用途 第一种方法使用一个参数来决定返回哪个合适的子类实例。调用方不知道(也不关心)子类。他有一个int,并且想要这个int的合适的A 第二种方法只是构造函数的替代方法,但它会强制调用方已经知道要实例化哪个子类,并选择合适的工厂。试着继续发布
class Factory3 : Factory
{
public A CreateA()
{
return new A3();
}
}