# Modelli di progettazione in Java

[](https://raw.githubusercontent.com/iluwatar/java-design-patterns/master/LICENSE.md)
[](https://sonarcloud.io/dashboard?id=iluwatar_java-design-patterns)
[](https://sonarcloud.io/dashboard?id=iluwatar_java-design-patterns)
[](https://gitter.im/iluwatar/java-design-patterns?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
[](#contributors-)
Leggi in lingue diverse: [**it**](localization/it/README.md), [**zh**](localization/zh/README.md), [**ko**](localization/ko/README.md), [**fr**](localization/fr/README.md), [**tr**](localization/tr/README.md), [**ar**](localization/ar/README.md), [**es**](localization/es/README.md), [**pt**](localization/pt/README.md), [**id**](localization/id/README.md), [**ru**](localization/ru/README.md), [**de**](localization/de/README.md), [**ja**](localization/ja/README.md), [**vi**](localization/vi/README.md), [**bn**](localization/bn/README.md), [**np**](localization/np/README.md)
# Introduzione
I design patterns sono le migliori pratiche di programmazione che uno sviluppatore puó usare per
risolvere problemi durante il design di un'applicazione o di un sistema.
I design patterns possono velocizzare lo sviluppo fornendo paradigmi di
sviluppo testati e approvati.
Riutilizzare i design patterns aiuta a prevenire problematiche che possono causare maggiori problemi, inoltre migliorano la leggibilità del codice per gli sviluppatori e ingegneri che hanno familiarità con questi patterns.
# Come iniziare
Il sito mostra i design patterns sviluppati utilizzando il linguaggio Java. Le soluzioni sono state
sviluppate da programmatori e ingegneri esperti provenienti dalla community open-source. Questi patterns possono essere compresi attraverso descrizioni dettagliate o guardando
il codice sorgente. Gli esempi di codice sono ben commentati e possono essere
visti come dei tutorial di programmazione su come implementare uno specifico pattern. Per fare ciò utiliziamo le migliori tecnologie open-source di Java.
Prima di cimentarti nel materiale proposto, dovresti prima familiarizzare con i vari
[Principi di Software Design](https://java-design-patterns.com/principles/).
Tutti i patterns dovrebbero essere i più semplici possibili. Ti consigliamo di cominiciare
con i principi KISS, YAGNI e Do The Simplest Thing That Could Possibly Work. Complessità
e patterns dovrebbero essere introdotti solamente quando sono necessari per motivi pratici.
Quando hai familiarizzato con questi concetti puoi cominciare a immergerti nei
[design patterns disponibili](https://java-design-patterns.com/patterns/) utilizzando
uno dei seguenti approcci:
- Cercando uno specifico pattern tramite il nome. Non riesci a trovarlo? Allora comunicacelo [qui](https://github.com/iluwatar/java-design-patterns/issues).
- Usando tags come `Performance`, `Gang of four` o `Data access`.
- Usando categorie appartenenti ai patterns come `Creational`, `Behavioral`, etc.
Speriamo che le soluzioni object-oriented mostrate ti siano utili per i tuoi progetti e che tu
ti diverta a impararle come abbiamo fatto noi nell' implementarle.
# Come contribuire
Se desideri contribuire al progetto puoi trovare le informazioni necessarie nella nostra pagina
[wiki](https://github.com/iluwatar/java-design-patterns/wiki). Ti aiuteremo a rispondere a
ogni tua domanda nella [chatroom Gitter](https://gitter.im/iluwatar/java-design-patterns).
# Licenza
Questo progetto è licanziato nei termini della licenza MIT.