Sobes.tech
Middle

Quali pattern di progettazione conosci?

sobes.tech AI

Risposta dell'AI

Creazionali:

  • Metodo di Fabbrica (Factory Method): Definisce un'interfaccia per creare un oggetto, ma permette alle sottoclassi di decidere quale classe istanziare.
  • Fattoria Astratta (Abstract Factory): Fornisce un'interfaccia per creare famiglie di oggetti correlati o dipendenti senza specificarne le classi concrete.
  • Builder (Builder): Separa la costruzione di un oggetto complesso dalla sua rappresentazione, in modo che lo stesso processo di costruzione possa creare diverse rappresentazioni.
  • Prototipo (Prototype): Crea nuovi oggetti copiando un'istanza esistente.
  • Singleton (Singleton): Garantisce che una classe abbia una sola istanza e fornisce un punto di accesso globale a essa.

Strutturali:

  • Adattatore (Adapter): Converte l'interfaccia di una classe in un'altra interfaccia che i clienti si aspettano.
  • Ponte (Bridge): Divide un'astrazione dalla sua implementazione in modo che possano variare indipendentemente.
  • Composto (Composite): Compone oggetti in strutture ad albero per rappresentare gerarchie parte-tutto. Permette ai clienti di trattare oggetti singoli e composizioni in modo uniforme.
  • Decoratore (Decorator): Aggiunge responsabilità a un oggetto in modo dinamico. È un'alternativa flessibile alla sottoclassificazione per estendere le funzionalità.
  • Faccata (Facade): Fornisce un'interfaccia unificata a un insieme di interfacce in un sottosistema. Definisce un'interfaccia di alto livello che rende il sottosistema più facile da usare.
  • Flyweight (Flyweight): Viene usato per condividere in modo efficiente un gran numero di oggetti simili.
  • Proxy (Proxy): Fornisce un oggetto sostitutivo che controlla l'accesso a un altro oggetto.

Comportamentali:

  • Catenella di Responsabilità (Chain of Responsibility): Permette di passare le richieste sequenzialmente lungo una catena di gestori. Ogni gestore decide se processare la richiesta o passarla al successivo.
  • Comando (Command): Incapsula una richiesta come oggetto, consentendo di parametrizzare i clienti con richieste diverse, mettere in coda o registrare le richieste, e supportare operazioni di annullamento.
  • Iteratore (Iterator): Fornisce un modo di accedere sequenzialmente agli elementi di un oggetto aggregato senza rivelare la sua rappresentazione interna.
  • Media (Mediator): Definisce un oggetto che incapsula come un insieme di oggetti interagiscono. Favorisce un accoppiamento debole evitando riferimenti espliciti tra gli oggetti.
  • Memento (Memento): Cattura e esternalizza lo stato interno di un oggetto senza violare la sua incapsulamento, permettendo all'oggetto di essere ripristinato a quello stato successivamente.
  • Osservatore (Observer): Definisce una dipendenza "uno a molti" tra oggetti, in modo che quando uno cambia stato, tutti i suoi dipendenti siano notificati e aggiornati automaticamente.
  • Stato (State): Permette a un oggetto di cambiare comportamento quando il suo stato interno cambia. L'oggetto sembra cambiare classe.
  • Strategia (Strategy): Definisce una famiglia di algoritmi, li incapsula e li rende intercambiabili. Permette all'algoritmo di variare indipendentemente dai clienti che lo utilizzano.
  • Metodo Template (Template Method): Definisce lo scheletro di un algoritmo in un'operazione, lasciando alcuni passi alle sottoclassi. Permette alle sottoclassi di ridefinire alcuni passi dell'algoritmo senza cambiarne la struttura.
  • Visitante (Visitor): Rappresenta un'operazione da eseguire sugli elementi di una struttura di oggetti. Permette di definire una nuova operazione senza modificare le classi degli elementi su cui opera.