<!-- the line below needs to be an empty line C: (its because kramdown isnt
     that smart and dearly wants an empty line before a heading to be able to
     display it as such, e.g. website) -->

# Modelli di progettazione in Java

![Java CI](https://github.com/iluwatar/java-design-patterns/workflows/Java%20CI/badge.svg)
[![License MIT](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/iluwatar/java-design-patterns/master/LICENSE.md)
[![Lines of Code](https://sonarcloud.io/api/project_badges/measure?project=iluwatar_java-design-patterns&metric=ncloc)](https://sonarcloud.io/dashboard?id=iluwatar_java-design-patterns)
[![Coverage](https://sonarcloud.io/api/project_badges/measure?project=iluwatar_java-design-patterns&metric=coverage)](https://sonarcloud.io/dashboard?id=iluwatar_java-design-patterns)
[![Join the chat at https://gitter.im/iluwatar/java-design-patterns](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/iluwatar/java-design-patterns?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
[![All Contributors](https://img.shields.io/badge/all_contributors-233-orange.svg?style=flat-square)](#contributors-)
<!-- ALL-CONTRIBUTORS-BADGE:END -->

<br/>

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)
<br/>

# 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.
