我已经实现了工厂方法如下:
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;
}
}
我想在下面的类方法 f1() 中使用工厂。方法 f1() 将从其派生类中调用。我可以通过以下方法:
方法一:
class MyClass
{
private A obj = null;
public void f1()
{
obj = Factory.GetInstance(1);
}
}
方法二:
class MyClass2
{
protected A obj { get; set; }
protected void f1()
{
obj = Factory.GetInstance(1);
}
}
哪种方法更好?我需要保护属性和方法吗?这些方法的优缺点是什么?