hanno "inventato" i design patterns apposta per rispondere a queste domande http://en.wikipedia.org/wiki/Software_design_pattern

EDIT: per non parlare che prima devi fare l'analisi del progetto prima di pensare ai DP da utilizzare, prima ancora di scegliere la tecnologia da utilizzare addirittura