私はオープンクローズドの原則を調べていて、それは良さそうだったので、その教えを実践したかったのです。新たに発見した知識を既存のプロジェクトに適用することを検討しましたが、すぐに行き詰まりました。
新しい UserType が登場した場合 (その可能性は非常に高い)、これを変更する必要がありますが、まだ変更を受け付けていません。どうすればこれを回避できますか?
私が読んだことから、OCP を適用する代わりに、ここにファクトリを実装する必要があるように思えますか?
private void BuildUserTree(User user)
{
switch (user.UserType)
{
case UserType.FreeLoader:
BuildFreeLoaderTree();
break;
case UserType.Premium:
BuildPremiumTree();
break;
case UserType.Unlimited:
BuildUnlimitedTree();
break;
default:
throw new Exception("No UserType set");
}
}
ありがとう、コハン