Я изучал принцип «открытость-закрыто», и это звучит хорошо, и поэтому я хотел применить его учение. Я посмотрел на применение моих новых знаний к существующему проекту и сразу немного застрял.
Если появится новый 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");
}
}
Спасибо, Кохан