Pattern GoF e Sviluppo Software

Oltre 20 anni fa è stato pubblicato per la prima volta il bestseller iconico Design Patterns: Elements of Reusable Object-Oriented Software (Elementi per il riuso di software ad oggetti).

Cosa sono i design patterns?

I design patterns, letteralmente modelli di progettazione, sono un potente strumento per gli sviluppatori di software: forniscono, infatti, soluzioni ai comuni problemi di progettazione.

I modelli di progettazione sono generalmente volti a risolvere i problemi della generazione e dell’interazione degli oggetti, piuttosto che i problemi dell’architettura software complessiva.

I 23 design patterns della GoF

I design patterns della Gang of Four sono divisi in quattro categorie: modelli creativi, strutturali e comportamentali.

I modelli creativi che forniscono modi per istanziare singoli oggetti o gruppi di oggetti correlati sono cinque:

  • Abstract Factory: fornisce a un client un insieme di oggetti correlati o dipendenti.
  • Builder: crea oggetti complessi con parti costitutive che devono essere create nello stesso ordine o utilizzando un algoritmo specifico.
  • Factory Method: sostituisce i costruttori di classi, astraendo il processo di generazione dell’oggetto in modo che il tipo dell’oggetto istanziato possa essere determinato in fase di esecuzione.
  • Prototype: crea un’istanza di un nuovo oggetto copiando tutte le proprietà di un oggetto esistente, creando un clone indipendente.
  • Singleton: questo modello assicura che venga creata solo un’istanza di un oggetto.

I modelli strutturali che forniscono un modo per definire le relazioni tra classi o oggetti sono sette:

  • Adapter: consente a due classi incompatibili di lavorare insieme.
  • Bridge: è utilizzato per separare gli elementi astratti di una classe dai dettagli d’implementazione.
  • Composite: è usato per creare strutture ad albero gerarchiche e ricorsive di oggetti correlati.
  • Decorator: consente di aggiungere o rimuovere funzionalità dell’oggetto senza modificarne l’aspetto esterno o la funzione.
  • Facade: è usato per fornire un’interfaccia semplice a un oggetto sottostante più complesso.
  • Fliweight: riduce la memoria e l’utilizzo delle risorse per modelli complessi.
  • Proxy: fornisce un’interfaccia segnaposto a un oggetto sottostante per controllare l’accesso e ridurre la complessità.

I modelli comportamentali che definiscono le modalità di comunicazione tra classi e oggetti, infine, sono undici:

  • Chain of Responsibility: stabilisce una catena all’interno di un sistema, in modo che un messaggio possa essere gestito al livello in cui è stato ricevuto per la prima volta.
  • Command: trasforma una richiesta in un oggetto autonomo che contiene tutte le informazioni sulla richiesta stessa.
  • Interpreter: aiuta a convertire le informazioni da un linguaggio in un altro.
  • Iterator: è usato per fornire un modo standard per attraversare un gruppo di oggetti.
  • Mediator: semplifica la comunicazione tra gli oggetti.
  • Memento: contiene un’istantanea dello stato di un oggetto, in modo che l’oggetto possa tornare al suo stato originale senza dover rivelare il suo contenuto.
  • Observer: consente a un componente di trasmettere messaggi in modo flessibile ai destinatari interessati.
  • State: permette a un oggetto di alterare il suo comportamento in relazione ai cambiamenti del suo stato interno.
  • Strategy: definisce una famiglia di algoritmi e li rende intercambiabili.
  • Template method: definisce i passaggi di base di un algoritmo e consente la modifica dell’implementazione dei singoli passaggi.
  • Visitor: separa un algoritmo da una struttura di oggetti spostando la gerarchia dei metodi in un oggetto.
Matteo Bleve

Leggi anche questi articoli

Lead Generation: creare conversazioni per generare contatti qualificati

Per farsi strada in un mondo sempre più affollato e riuscire a catturare l’attenzione di persone che mostrano un reale interesse verso la tua ...
Alessia Nuzzo

Link nelle storie di Instagram: presto disponibile per tutti!

Fin dalla sua uscita Instagram si è saputo fare apprezzare per la grande attrattiva rappresentata anche come strumento di marketing, taleà ...
Federico Petracca

Come migliorare l’esperienza d’acquisto da mobile

Acquistare on line è ormai diventata un’abitudine consolidata anche in Italia: a testimoniarlo sono i numeri del settore eCommerce che, ...
Alessia Nuzzo
CHIAMA SCRIVICI