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).
Barra Servizi

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.

Leggi anche questi articoli

Google Ads e IA: Gemini per contenuti automatici

Google prosegue con l’espansione di Gemini, il suo avanzato modello di intelligenza artificiale, integrandolo nei suoi servizi e lanciandolo ...

Video storytelling: la potenza narrativa del video nelle strategie di marketing

Nell’oceano digitale in cui navighiamo ogni giorno, emergere e catturare l’attenzione è una sfida che tutti i brand affrontano. In ...

Vacanze Intelligenti con l’AI: come stanno cambiando le piattaforme di viaggio

Nel panorama odierno, caratterizzato da una crescente interconnessione digitale, il turismo si sta evolvendo a passi da gigante, spinto in avanti ...
CHIAMA SCRIVICI