I pattern (o meglio, design pattern) non sono altro che il modello che rappresenta la soluzione al nostro problema. Esistono diversi tipi di pattern che puoi trovare in questa
pagina.
Io uso spesso, ad esempio, il factory pattern quando devo risolvere il problema, piuttosto ricorrente, di dover avere una piattaforma indipendente dal mio programma. Spiegandomi meglio, se ad esempio creo un programma che ha bisogno di una persistenza dei dati, io a priori non voglio che il mio programma sia strettamente collegato ad un tipo di base dati, ma sia totalmente indipendente da questa, in modo che io possa cambiare il tipo di base dati (mysql, sqlserver, xml, txt, ...) senza influenzare la mia applicazione. Il factory pattern risolve egregiamente tale problema.
Quindi ecco che il pattern è, come detto sopra, un modello che ci permette di risolvere i problemi del nostro progetto.
spero di esserti stato utile.