Я немного почитал о шаблонах проектирования и хотел взглянуть на них. Учтите следующее:
Dim objGruntWorker as IGruntWorker
if SomeCriteria then
objGruntWorker = new GoFor()
else if SomeOtherCriteria then
objGruntWorker = new Newb()
else if SomeCriteriaAndTheKitchenSink then
objGruntWorker = new CubeRat()
end if
objGruntWorker.GetBreakfast()
system.threading.thread.sleep(GetMilliSecondsFromHours(4))
objGruntWorker.GetLunch()
Приведенный выше код увеличивается каждый раз, когда возникает новый критерий. Я видел такой код повсюду, и по незнанию написал его сам. Как это должно быть решено? У этого вида анти-паттерна есть более «формальное» имя? Спасибо за вашу помощь!
Редактировать: Еще одно соображение - я хочу избежать перекомпиляции существующих реализаций IGruntWorker
, просто чтобы добавить новую реализацию.