Os padrões de design são ótimos, se usados corretamente.
É útil lembrar que a idéia de padrões de design se originou na arquitetura. A arquitetura pode variar bastante. No entanto, existem muitas idéias centrais presentes em qualquer edifício. Dessa maneira, pense nos padrões como blocos de construção do design. É importante observar que nem todo edifício inclui todos os padrões arquiteturais possíveis.
Digamos que você esteja projetando uma casa. Em vez de ter a porta da frente aberta para a rua, você deseja uma área protegida antes de entrar na casa, ou seja, uma ante-sala. Esta área ajustará um certo padrão. Nomeadamente, terá duas entradas, algumas paredes e provavelmente um telhado. Observe que o padrão não especifica portas, janelas ou quantas paredes. Na maioria das implementações, haverá duas portas, quatro paredes e talvez janelas. No entanto, o padrão descreve uma área fechada com duas entradas. Um leva para a ante-sala de fora da casa e o outro para o resto da casa. A chave aqui é que, se você quiser uma antecâmara, deve incluir uma área e fornecer duas entradas nessa área.
Os problemas típicos com os padrões de design na programação estão em excesso e a crença de que são balas de prata para corrigir qualquer problema. Eles não são. São maneiras de se comunicar e pensar em idéias úteis de programação. Se os bits de sintaxe de uma linguagem específica são os tijolos e a argamassa, os padrões descrevem maneiras úteis de organizá-las para atender a determinadas necessidades.