Design Pattern Tutorial - 1 - Introduzione
Inizia una serie di articoli dedicati ai principali design pattern della programmazione ad oggetti.
La prima cosa da fare è chiarire cos'è un pattern. Per pattern si intende un metodo preciso di svolgere un determinato lavoro, frutto dell'esperienza maturata. Esso, pertanto, costitusce un modo per risolvere un determinato problema, ma non è l'unico e starà al programmatore scegliere di volta in volta se affidarsi ad un pattern o ad una soluzione differente. Si tratta di valutare di volta in volta il grado di complessità della soluzione e scegliere la strada migliore.
In questo primo articolo vedremo una carrellata dei principali design pattern, che approfondiremo di volta in volta in articoli dedicati.
Adapter
Viene usato quando occorre adattare il nostro codice alle esigenze di un client, fuori dal nostro controllo.
Facade
Viene usato quando si vuole una interfaccia di alto livello che nasconde la complessità del sottosistema cui si appoggia.
Composite
Viene usato quando occorre modellare oggetti in cui alcuni elementi possono contenere gruppi di oggetti. Un tipico esempio è l'albero.
Bridge
Viene usato quando si vuole disaccoppiare una astrazione dalla sua implementazione. Un tipico esempio sono i driver.
Singleton
Viene usato quando si vuole che una classe abbia una sola istanza e un solo punto di accesso ad essa.
Observer
Viene usato per gestire il caso in cui più oggetti dipendono dal comportamento di uno specifico oggetto.
Mediator
Viene usato quando si vuole centralizzare le regole di interazione tra un gruppo di oggetti.
Proxy
Viene usato quando si vuole demandare ad un altro oggetto l'accesso alle proprie funzionalità.
Chain Of Responsability
Viene usato quando si vuole consentire a più oggetti di gestire una chiamata in sequenza, ognuno responsabile di una determinata azione
Builder
Viene usato quando si vuole spostare la logica della costruzione della classe al di fuori della classe stessa.
Abstract Factory
Viene usato quando si consente ad un client di poter istanziare oggetti che fanno parte di una famiglia di classi correllate
Prototype
Viene usato quando si istanzia un nuovo oggetto a partire da una già presente
Template Method
Viene usato quando si rimanda la definizione di un algoritmo ad una sottoclasse. Tipico esempio è l'interfaccia Comparator.
State
Viene usato quando si è in presenza di una logica a stati e la si distribuisce su più classi.
Command
Viene usato quando si incapsula una richiesta all'interno di un oggetto, che sarà invocabile da un client. Tipico esempio sono i menù.
Decorator
Viene usato quando si vuole estendere il comportamento di un oggetto esistente.
Iterator
Viene usato quando si vuole consentire ad un client di accedere sequenzialmente agli elementi di una collezione.
Alla prossima