+ 1 при использовании фабричного шаблона - очень мощный там.
Помимо заводского образца, каждый раз, когда я его использовал, у меня, вероятно, не должно быть ...
Я использовал его для динамической загрузки классов, которые реализуют определенные интерфейсы (у меня были пункты меню из сборок) при запуске, и я действительно сожалею об этом использовании. Я хотел бы загрузить из файла конфигурации (а позже добавил форму, которая показывает доступные интерфейсы для загрузки). Это круто, но ужасно медленно ...
Анти-паттерн - использовать его для доступа к свойствам, которые дизайнеры классов помечали как частные, не зная, почему они пометили их как частные. Я сделал это с помощью элемента управления DataGridView WinForms, чтобы сбросить логическую переменную, чтобы можно было перемещать столбец-компаньон при перемещении его дополнения. Еще раз, это очень круто, но этот код ужасно провалится, если новый релиз изменит это частное свойство (его вполне можно было бы пропустить в 3.0 или 3.5 ...).