Non sono necessari modelli di progettazione. In qualsiasi lingua.
Tendo a leggere un sacco di codice scritto da persone che leggono schemi di progettazione e poi pensano che dovrebbero usarli ovunque. Il risultato è che il codice reale viene sepolto sotto tonnellate di interfacce, wrapper e layer ed è piuttosto difficile da leggere. È un approccio sbagliato nei modelli di progettazione.
Esistono schemi di progettazione in modo da avere a portata di mano un repertorio di utili idiomi quando si incontra un problema. Ma non dovresti mai applicare alcun modello prima di identificare il problema. Keep it Simple Stupid dovrebbe sempre essere il principio di governo superiore.
Aiuta anche a pensare a schemi di progettazione come a un concetto per pensare al problema piuttosto che a un codice specifico da scrivere. E su gran parte del boilerplate come soluzione alternativa a Java priva di funzioni gratuite e oggetti funzione standard che usi nella maggior parte degli altri linguaggi che li hanno (come Python, C #, C ++, ecc.)
Potrei dire che ho uno schema di visitatore, ma in qualsiasi lingua con funzioni di prima classe sarà solo una funzione che prende una funzione. Invece della classe di fabbrica, solitamente ho solo una funzione di fabbrica. Potrei dire che ho un'interfaccia, ma sono solo un paio di metodi contrassegnati con commenti, perché non ci sarebbero altre implementazioni (ovviamente in python un'interfaccia è sempre solo commenti, perché è tipizzata a forma di anatra). Parlo ancora del codice come se usassi il pattern, perché è un modo utile per pensarci, ma in realtà non digito tutte le cose finché non ne ho davvero bisogno.
Quindi impara tutti i pattern come concetti . E dimentica le implementazioni specifiche. L'implementazione varia e dovrebbe variare nel mondo reale, anche solo in Java.