正しいタイプのみを作成するファクトリ
Factory
したがって、正しいタイプのみを返す例を次に示します。
public class BirdFactory
{
public static IBird CreateBird(string birdType)
{
switch (birdType)
{
case "Eagle":
return new Eagle();
case "Penguin":
return new Penguin();
}
}
}
次のように使用されます:
IBird bird = BirdFactory.CreateBird("eagle");
bird.FlyToLocation(new Location("London"));
正しいタイプの作成と状態の設定の因数分解
状態とタイプを設定するために使用されているファクトリの例を次に示します。
public class BirdFactory
{
public static IBird CreateBird(string birdType, Location locationToFlyTo)
{
switch (birdType)
{
case "Eagle":
return new Eagle(locationToFlyTo);
case "Penguin":
return new Penguin(locationToFlyTo);
}
}
}
次のように使用されます:
IBird bird = BirdFactory.CreateBird("eagle", new Location("London"));
bird.FlyToLocation();
質問
2番目のプラクティスはどの程度受け入れられますか?どちらがより保守しやすいですか?