Шаблоны проектирования забавны тем, что вы знаете, где использовать шаблон, только когда полностью понимаете применимый шаблон. Такие вещи, как «Стратегия», «Наблюдатель», «Итератор», которые вы можете, после небольшой практики, использовать, не задумываясь. Если вы находитесь в C #, вы все время используете итератор (IEnumerable ...), не считая его шаблоном.
На мой взгляд, эти простые шаблоны являются лучшими. У вас уже есть работа, и попытка объединить вашу проблему в один шаблон за другим, когда он не вполне подходит, является пустой тратой времени и приводит к плохому коду.
Мой совет - взглянуть на uml-диаграммы для шаблона, и, если он достаточно прост, попробуйте и выучите его достаточно хорошо, чтобы вы могли вспомнить его позже. Шаблон с более простым контрактом, вероятно, будет более полезным чаще.