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

Le ultime novità di Instagram [aggiornamento ottobre 2021]

Instagram è pronto a rivoluzionarsi e lo farà subito mettendo a disposizione dei propri utenti tantissime novità. ...
Federico Petracca

“Pillole” di web marketing: guida ai social per strutture sanitarie

Sono ormai tantissimi gli utenti che sfruttano internet per ottenere informazioni di ogni genere. Non fanno eccezione le ricerche in tema di salute. ...
Giulia Chiffi

Aggiungere Instagram su WordPress i migliori plugin

Nel mondo moderno un aspetto da non sottovalutare è l’interazione tra i vari strumenti comunicativi, peculiarità che permette di far aumentare ...
Biagio Chiarello
CHIAMA SCRIVICI