次のように Factory メソッドを実装しました。
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() で Factory を使用したいと考えています。メソッド f1() は、その派生クラスから呼び出されます。次のアプローチを使用できます。
アプローチ 1:
class MyClass
{
private A obj = null;
public void f1()
{
obj = Factory.GetInstance(1);
}
}
アプローチ 2:
class MyClass2
{
protected A obj { get; set; }
protected void f1()
{
obj = Factory.GetInstance(1);
}
}
どちらのアプローチが優れていますか? プロパティとメソッドを保護する必要がありますか? アプローチの長所と短所は何ですか?