Glossario Design pattern

Glossario verificato

Soluzioni collaudate a problemi ricorrenti del software: pattern creazionali, strutturali e comportamentali, spiegati con esempi.

  • A

  • Abstract Factory

    Pattern creazionale che fornisce un'interfaccia per creare famiglie di oggetti correlati senza specificarne le classi concrete. Permette di cambiare intera famiglia di prodotti mantenendo il resto del codice invariato.
  • Active Object (Oggetto attivo)

    Disaccoppia l'invocazione di un metodo dalla sua esecuzione facendo vivere l'oggetto in un proprio thread di controllo; le chiamate vengono accodate e servite in modo asincrono da uno scheduler dedicato.
  • Active Record

    Pattern in cui un oggetto rappresenta una riga di tabella e incorpora i metodi per salvarsi, aggiornarsi ed eliminarsi. Semplifica l'accesso ai dati legando strettamente oggetto e record del database.
  • Adapter

    Pattern strutturale che converte l'interfaccia di una classe in un'altra attesa dal client, permettendo la collaborazione fra componenti altrimenti incompatibili. Funge da traduttore fra sistemi con contratti diversi, favorendo il riuso di codice esistente.
  • Aggregate (Aggregato)

    Raggruppa un insieme di oggetti di dominio correlati trattati come un'unica unità per le modifiche; una radice (aggregate root) ne controlla l'accesso e ne garantisce invarianti e consistenza transazionale.
  • Ambassador

    Crea un servizio helper che invia le richieste di rete per conto di un'applicazione consumatrice, incapsulando funzioni trasversali come retry, monitoraggio e sicurezza senza modificare il codice del client.
  • Anti-Corruption Layer (Livello anticorruzione)

    Livello di traduzione che isola un bounded context dai modelli di un sistema esterno o legacy, convertendone i concetti per impedire che contaminino il modello di dominio interno mantenendolo coerente e stabile.
  • API Gateway

    Punto di ingresso unico che espone ai client un'interfaccia unificata verso un insieme di microservizi, occupandosi di instradamento, composizione delle richieste e funzioni trasversali come autenticazione e rate limiting.
  • B

  • Backend for Frontend (BFF)

    Prevede un gateway o backend dedicato per ciascun tipo di client, ad esempio mobile e web, così da adattare le API alle esigenze specifiche di ogni frontend anziché servirli tutti con un unico backend generico.
  • Blackboard (Lavagna)

    Più sottosistemi specializzati collaborano su una struttura dati condivisa (la lavagna) per costruire incrementalmente una soluzione; adatto a problemi senza strategia risolutiva deterministica, come il riconoscimento vocale.
  • Bridge

    Pattern strutturale che separa un'astrazione dalla sua implementazione, così che le due possano variare in modo indipendente. Evita l'esplosione di sottoclassi quando esistono più dimensioni di variazione.
  • Broker

    Struttura sistemi distribuiti coordinando la comunicazione tra componenti tramite un intermediario (broker) che inoltra richieste e risposte, disaccoppiando client e server dai dettagli di localizzazione e trasporto.
  • Builder

    Pattern creazionale che separa la costruzione di un oggetto complesso dalla sua rappresentazione, costruendolo passo dopo passo. È utile quando un oggetto ha molte parti o configurazioni opzionali.
  • Bulkhead (Paratia)

    Isola le risorse dell'applicazione in pool separati, come le paratie di una nave, affinché il guasto o il sovraccarico di un componente non esaurisca le risorse degli altri, limitando la propagazione dei fallimenti.
  • C

  • Cache-Aside

    L'applicazione carica i dati nella cache su richiesta: in caso di miss li legge dall'archivio primario, li memorizza in cache e li restituisce; la gestione della cache resta a carico dell'applicazione, non dell'archivio.
  • Chain of Responsibility

    Pattern comportamentale che fa passare una richiesta lungo una catena di gestori, ciascuno dei quali può trattarla o inoltrarla. Disaccoppia chi invia da chi gestisce, rendendo flessibile la sequenza dei controlli.
  • Circuit Breaker

    Pattern che interrompe temporaneamente le chiamate verso un servizio che sta fallendo, per evitare di aggravarne il sovraccarico. Dopo una pausa riprova con cautela, migliorando la resilienza dei sistemi distribuiti.
  • Command

    Pattern comportamentale che incapsula una richiesta in un oggetto, così da poterla parametrizzare, accodare, registrare o annullare. È alla base delle funzioni di annullamento e delle code di operazioni.
  • Compensating Transaction (Transazione compensativa)

    Annulla gli effetti di una serie di operazioni già completate eseguendo azioni compensative, quando non è possibile un rollback atomico; è il meccanismo con cui una Saga ripristina la consistenza in caso di fallimento.
  • Competing Consumers (Consumatori concorrenti)

    Più consumatori leggono in parallelo dallo stesso canale di messaggi, elaborando ciascuno messaggi diversi; consente di scalare il throughput e bilanciare il carico distribuendo i messaggi tra le istanze disponibili.
  • Composite

    Pattern strutturale che compone oggetti in strutture ad albero per trattare in modo uniforme elementi singoli e loro aggregazioni. È ideale per rappresentare gerarchie come menu, file e cartelle.
  • CQRS

    Pattern che separa le operazioni di lettura da quelle di scrittura usando modelli distinti per interrogare e per modificare i dati. Consente di ottimizzare in modo indipendente i due percorsi in sistemi complessi.
  • D

  • Data Access Object (DAO)

    Pattern che isola in un oggetto dedicato l'accesso a una sorgente di dati, offrendo un'interfaccia astratta per le operazioni di lettura e scrittura. Separa la logica applicativa dai dettagli di persistenza.
  • Data Mapper

    Livello di mapping che trasferisce i dati tra oggetti di dominio e database relazionale mantenendoli indipendenti tra loro e dal mapper stesso; a differenza di Active Record, la logica di persistenza vive fuori dagli oggetti di dominio.
  • Database per Service (Database per servizio)

    Ogni microservizio possiede e gestisce in modo privato il proprio database, accessibile solo tramite le sue API; garantisce basso accoppiamento e autonomia dei servizi al costo di una gestione distribuita della consistenza.
  • Dead Letter Channel (Canale dei messaggi non recapitati)

    Canale su cui il sistema di messaggistica sposta i messaggi che non possono essere consegnati o elaborati, così da non perderli e poterli ispezionare o rielaborare in seguito, evitando la perdita silenziosa dei dati problematici.
  • Decorator

    Pattern strutturale che aggiunge dinamicamente responsabilità a un oggetto avvolgendolo in oggetti che condividono la stessa interfaccia. Offre un'alternativa flessibile all'ereditarietà per estendere le funzionalità, componibile in più livelli.
  • Domain Event (Evento di dominio)

    Oggetto che rappresenta un fatto significativo accaduto nel dominio, ad esempio 'ordine spedito'; viene pubblicato per notificare altre parti del sistema, disaccoppiando chi genera l'evento da chi vi reagisce.
  • Domain Model (Modello di dominio)

    Organizza la logica di business come rete di oggetti interconnessi che incorporano sia dati sia comportamento, con un oggetto per concetto del dominio; adatto a regole complesse, si contrappone a Transaction Script e Table Module.
  • Double-Checked Locking (Blocco a doppio controllo)

    Riduce l'overhead del lock nell'inizializzazione pigra verificando la condizione prima e dopo l'acquisizione del blocco, così da entrare in sezione critica solo alla prima creazione della risorsa condivisa.
  • E

  • Event Sourcing

    Pattern che conserva lo stato di un sistema come sequenza di eventi anziché come istantanea corrente. Ricostruendo lo stato dagli eventi, offre una cronologia completa e la possibilità di rivedere il passato.
  • F

  • Facade

    Pattern strutturale che offre un'interfaccia semplificata e unificata verso un sottosistema complesso. Nasconde i dettagli interni, riducendo l'accoppiamento tra il client e le molte parti del sistema.
  • Factory Method

    Pattern creazionale che definisce un'interfaccia per creare oggetti delegando alle sottoclassi la scelta della classe concreta da istanziare. Disaccoppia il codice client dai tipi specifici, permettendo di introdurre nuovi prodotti senza modificare la logica che li utilizza.
  • Flyweight

    Pattern strutturale che condivide lo stato comune tra molti oggetti simili per ridurre l'occupazione di memoria. È usato quando servono grandissime quantità di oggetti quasi identici, come i caratteri in un documento.
  • Front Controller

    Pattern architetturale che convoglia tutte le richieste in un unico punto d'ingresso, che le smista ai gestori appropriati. È comune nei framework web per centralizzare autenticazione, instradamento e controlli.
  • I

  • Idempotent Consumer (Consumatore idempotente)

    Consumatore di messaggi progettato per gestire in modo sicuro le consegne duplicate, ad esempio tracciando gli identificatori dei messaggi già elaborati, così da produrre lo stesso risultato anche se un messaggio arriva più volte.
  • Identity Map (Mappa delle identità)

    Mantiene una mappa degli oggetti già caricati dal database entro una transazione, garantendo che ciascuno sia caricato una sola volta; evita letture duplicate e incoerenze restituendo sempre la stessa istanza.
  • Iterator (pattern)

    Pattern comportamentale che fornisce un modo uniforme per scorrere gli elementi di una collezione senza esporne la struttura interna. Permette di attraversare aggregati diversi con la stessa interfaccia.
  • L

  • Layers (Architettura a livelli)

    Struttura l'applicazione in livelli sovrapposti (ad esempio presentazione, dominio, accesso ai dati) in cui ciascun livello dipende solo da quelli sottostanti; favorisce separazione delle responsabilità e sostituibilità.
  • Leader Election (Elezione del leader)

    Coordina le azioni di un insieme di istanze collaboranti eleggendone una come leader responsabile della gestione delle altre, evitando conflitti e duplicazioni su risorse o compiti condivisi in un sistema distribuito.
  • M

  • Materialized View (Vista materializzata)

    Genera viste pre-popolate e pre-calcolate dei dati provenienti da uno o più archivi, ottimizzate per le query previste; migliora le prestazioni in lettura al costo di dover aggiornare la vista quando i dati sorgente cambiano.
  • Mediator

    Pattern comportamentale che centralizza in un oggetto mediatore le comunicazioni tra più componenti, che non si riferiscono più direttamente. Riduce l'accoppiamento e semplifica interazioni altrimenti intricate.
  • Memento

    Pattern comportamentale che cattura e conserva lo stato interno di un oggetto per poterlo ripristinare in seguito, senza violarne l'incapsulamento. È usato per implementare funzioni di annullamento e ripristino.
  • Message Broker (Broker di messaggi)

    Componente centrale che riceve messaggi da più mittenti e li instrada ai destinatari appropriati, disaccoppiando le applicazioni integrate le une dalle altre e riducendo le connessioni punto-punto.
  • Message Router (Router di messaggi)

    Instrada ogni messaggio verso un canale di destinazione diverso in base a condizioni, senza modificarne il contenuto; disaccoppia i passi di elaborazione permettendo di cambiare l'itinerario senza toccare mittente e destinatari.
  • Message Translator (Traduttore di messaggi)

    Traduce il formato di un messaggio da quello del mittente a quello atteso dal destinatario, consentendo l'integrazione di sistemi con modelli di dati diversi senza modificarli; è la base delle trasformazioni di contenuto.
  • Microkernel

    Separa un nucleo minimale di funzionalità dalle funzioni estese e specifiche del cliente, offrendo l'infrastruttura per collegare a runtime componenti aggiuntivi (plug-in); tipico di sistemi operativi e piattaforme estensibili.
  • Model-View-Controller (MVC)

    Pattern architetturale che divide un'applicazione in modello dei dati, vista di presentazione e controllore della logica di interazione. Separa le responsabilità, favorendo manutenibilità e test.
  • Model-View-Presenter (MVP)

    Pattern architetturale, variante di MVC, in cui un presenter gestisce tutta la logica di presentazione e aggiorna una vista passiva. Rende la vista sottile e più facilmente testabile.
  • Model-View-ViewModel (MVVM)

    Pattern architetturale che introduce un view model tra vista e modello, esponendo dati e comandi a cui la vista si lega. È diffuso nelle interfacce moderne con associazione automatica dei dati.
  • N

  • Null Object

    Pattern che fornisce un oggetto dal comportamento neutro al posto di un riferimento nullo. Evita continui controlli sul valore nullo, rendendo il codice più lineare e meno soggetto a errori.
  • O

  • Object Pool

    Pattern creazionale che riutilizza un insieme di oggetti già pronti invece di crearli e distruggerli continuamente. Riduce il costo di allocazione, utile per risorse pesanti come connessioni o thread.
  • Observer

    Pattern comportamentale in cui un soggetto mantiene una lista di osservatori e li notifica automaticamente a ogni cambiamento di stato. Realizza una dipendenza uno-a-molti a basso accoppiamento, alla base di molti meccanismi a eventi e di aggiornamento delle interfacce.
  • P

  • Pipes and Filters (Tubi e filtri)

    Scompone un'elaborazione in una catena di componenti indipendenti (filtri) collegati da canali (tubi): ogni filtro trasforma i dati e li passa al successivo, favorendo riuso, composizione e parallelizzazione dei passi.
  • Plugin

    Collega le classi durante la configurazione anziché in fase di compilazione, permettendo di selezionare l'implementazione tramite un punto di configurazione centralizzato; utile per adattare il comportamento ad ambienti diversi.
  • Presentation-Abstraction-Control (PAC)

    Struttura un sistema interattivo come gerarchia di agenti cooperanti, ciascuno composto da tre parti: presentazione (interfaccia), astrazione (dati) e controllo (coordinamento tra le due e con gli altri agenti).
  • Prototype (pattern)

    Pattern creazionale che crea nuovi oggetti clonandone uno esistente preso come modello, invece di costruirli da zero. È utile quando l'inizializzazione è costosa o la configurazione va replicata.
  • Proxy (pattern)

    Pattern strutturale che fornisce un sostituto di un altro oggetto per controllarne l'accesso. È usato per caricamento pigro, controllo dei permessi, memorizzazione dei risultati o accesso a oggetti remoti.
  • Q

  • Query Object (Oggetto query)

    Oggetto che rappresenta una query del database in forma orientata agli oggetti, costruibile senza conoscere l'SQL; viene tradotto in SQL a runtime, separando i criteri di ricerca dal codice di accesso ai dati.
  • R

  • Reactor

    Gestisce richieste di servizio concorrenti demultiplexando in modo sincrono gli eventi in ingresso da più sorgenti e dispacciandoli ai relativi gestori tramite un event loop; è alla base dell'I/O non bloccante.
  • Registry (Registro)

    Oggetto noto e globalmente accessibile che altri oggetti usano per trovare servizi e dati comuni; fornisce un punto di accesso condiviso alle risorse, alternativa al passaggio esplicito dei riferimenti tra i componenti.
  • Remote Facade (Facciata remota)

    Fornisce una facciata a grana grossa su oggetti a grana fine per migliorare l'efficienza sulla rete: riduce il numero di chiamate remote raggruppando più operazioni correlate in un'unica invocazione a maggiore granularità.
  • Retry (Ritentativo)

    Gestisce i fallimenti transitori ripetendo automaticamente un'operazione fallita, tipicamente con attese crescenti (backoff), nell'aspettativa che l'errore sia temporaneo; va abbinato a limiti di tentativi e a operazioni idempotenti.
  • S

  • Saga (pattern)

    Pattern che gestisce transazioni distribuite come una sequenza di operazioni locali, ciascuna con la propria compensazione in caso di errore. Mantiene la coerenza tra servizi senza una transazione unica globale.
  • Service Layer (Livello di servizio)

    Definisce il confine dell'applicazione con un livello di servizi che stabilisce le operazioni disponibili e coordina la risposta a ciascuna, incapsulando la logica applicativa e orchestrando dominio e infrastruttura.
  • Service Locator

    Pattern che centralizza in un registro il reperimento dei servizi di cui un'applicazione ha bisogno. Disaccoppia i client dalle classi concrete, pur essendo talvolta criticato rispetto all'iniezione delle dipendenze.
  • Sharding (Partizionamento orizzontale)

    Divide un archivio dati in partizioni orizzontali (shard) distinte, ciascuna con lo stesso schema ma un sottoinsieme dei dati, per superare i limiti di un singolo nodo e scalare capacità e prestazioni.
  • Sidecar

    Distribuisce le funzionalità di supporto di un'applicazione, come logging, configurazione o proxy di rete, in un processo o container separato affiancato a quello principale, condividendone il ciclo di vita ma isolandone il codice.
  • Specification (Specifica)

    Incapsula una regola di business come predicato riutilizzabile che stabilisce se un oggetto candidato soddisfa un criterio; le specifiche si combinano con operatori booleani (and, or, not) per esprimere regole complesse.
  • State (pattern)

    Pattern comportamentale che permette a un oggetto di cambiare comportamento al variare del proprio stato interno, come se cambiasse classe. Sostituisce lunghe catene di condizioni con oggetti-stato distinti.
  • Strangler Fig (Strangolamento)

    Migra incrementalmente un sistema legacy sostituendone gradualmente singole funzionalità con nuovi servizi, finché il vecchio sistema viene 'strangolato' e dismesso; riduce il rischio rispetto a una riscrittura totale.
  • Strategy

    Pattern comportamentale che incapsula una famiglia di algoritmi intercambiabili dietro un'interfaccia comune, permettendo di selezionarli e sostituirli a runtime. Evita lunghe catene condizionali e isola le varianti di comportamento in classi distinte.
  • T

  • Table Data Gateway (Gateway dati di tabella)

    Oggetto che funge da gateway verso una tabella del database: una singola istanza gestisce tutte le righe della tabella, incapsulando le query SQL e restituendo i risultati al chiamante, spesso come Record Set.
  • Table Module (Modulo tabella)

    Organizza la logica di business in una classe per ciascuna tabella del database, in cui l'unica istanza opera sull'intero insieme di righe anziché su un singolo record; spesso abbinato a un Record Set condiviso.
  • Template Method

    Pattern comportamentale che definisce lo scheletro di un algoritmo in un metodo, delegando alcuni passi alle sottoclassi. Fissa la struttura complessiva lasciando personalizzare singole fasi.
  • Transaction Script (Script di transazione)

    Organizza la logica applicativa in procedure, una per ciascuna richiesta della presentazione, che accedono direttamente al database o tramite un thin wrapper. Semplice e diretto, degrada al crescere della complessità del dominio.
  • Transactional Outbox (Outbox transazionale)

    Per pubblicare messaggi in modo affidabile, il servizio scrive gli eventi in una tabella 'outbox' nella stessa transazione che aggiorna i dati; un processo separato legge la tabella e li inoltra al broker, garantendo atomicità.
  • U

  • Unit of Work

    Pattern che tiene traccia delle modifiche agli oggetti durante un'operazione e le applica al database in un'unica transazione coerente. Riduce gli accessi e garantisce l'integrità dei cambiamenti correlati.
  • V

  • Value Object (Oggetto valore)

    Oggetto piccolo e tipicamente immutabile, privo di identità concettuale, la cui uguaglianza si basa sul valore degli attributi anziché sul riferimento; esempi tipici sono un importo monetario o un intervallo di date.
  • Visitor

    Pattern comportamentale che separa un'operazione dalla struttura di oggetti su cui agisce, permettendo di aggiungere nuove operazioni senza modificare le classi. È utile su gerarchie stabili con operazioni variabili.
Preferenze cookie

Gestisci i cookie usati su Glossario Italiano. Puoi modificare le preferenze in qualsiasi momento dal link "Gestisci preferenze" in fondo a ogni pagina.

  • Necessari
    Login, sicurezza (CSRF), preferenze cookie. Sempre attivi.
    Sempre on
  • Statistici
    Misurano in forma aggregata come viene usato il sito. Nessun profilo personale.
  • Marketing
    Cookie di reti pubblicitarie esterne, se attivati in futuro. Oggi GLS non usa script di terze parti e i nostri sponsor sono editoriali, non profilano.