If you want to execute any of the provided test programs, give a look to README.md in the pattern folder.
Per avviare i vari programmi di prova, leggere le istruzioni in ogni cartella nel file README.md
Provides an interface to create groups of objects belonging to the same family.
Fornisce un'interfaccia per la creazione di oggetto di una stessa famiglia.
Converts an interface of a class to another one.
Converte l'interfaccia di una classe in un'altra.
Encapsulates the construction process of a product.
Incapsula il processo di costruzione di un certo prodotto.
Encapsulates the link between user requests and expected behaviour in a class hierarchy.
Incapsula la relazione tra eventi utente e comportamenti attesi in una gerarchia di classi.
Adds functionalities to an object dinamically.
Aggiunge funzionalità ad un oggetto in modo dinamico.
Provides a single and simple interface to access a complex system.
Fornisce un'interfaccia unica e semplice per l'accesso ad un sistema complesso.
Is a mean by which you can navigate an aggregate.
È un mezzo con il quale si può traversare un aggregato.
Sets up a publish-subscribe architecture.
Definisce una dipendenza tra osservato e osservatori.
Controls the access to an object placing a surrogate between it and the client.
Regola l'accesso ad un oggetto attraverso un surrogato di questo.
Guarantees that there will be, at most, one istance of a given class.
Assicurarsi che esista al massimo un'istanza di una certa classe.
Decouples an algorithm from the classes that uses it.
Disaccoppia un algoritmo dalle classi che lo usano.
Set up the skeleton of an algorithm, allowing to customize or specialize some operations (either primitive or hooks).
Imposta uno scheletro per un algoritmo, permettendo alle sottoclassi di ridefinire solamente alcune parti dell'algoritmo e lasciando immutate le parti fattorizzabili.
Credits to: http://www.slideshare.net/RiccardoCardin