Извините, но я думаю, что вы подходите к шаблонам проектирования с неправильной стороны.
Начните с разработки ОО, определения классов и т. Д. «Копирование и вставка» - слишком общий термин, чтобы мы могли догадаться, какие классы вам могут понадобиться. Получив первоначальный дизайн, вы начинаете определять отношения между классами и степень связи между ними. В этот момент вы говорите что-то вроде «Хм, этот класс не должен знать о том, как создать этот класс, хм, может быть, мне нужна Фабрика». и «я не хочу, чтобы этот класс сообщал всем этим классам, что произошло что-то интересное, возможно, мне нужен шаблон Observer».