Design Patterns Creazionali e Strutturali
40 Questions
0 Views

Design Patterns Creazionali e Strutturali

Created by
@AltruisticLogarithm

Podcast Beta

Play an AI-generated podcast conversation about this lesson

Questions and Answers

Quale dei seguenti pattern creazionali è progettato per garantire che una classe abbia una sola istanza?

  • Abstract Factory
  • Singleton (correct)
  • Prototype
  • Factory Method
  • Quale pattern strutturale consente di convertire l'interfaccia di una classe in un'altra interfaccia compatibile?

  • Facade
  • Builder
  • Flyweight
  • Adapter (correct)
  • Qual è lo scopo principale del pattern Builder?

  • Separare la costruzione di un oggetto complesso dalla sua rappresentazione (correct)
  • Fornire un'interfaccia per famiglie di oggetti
  • Condividere oggetti per l'efficienza della memoria
  • Definire un'interfaccia per la creazione di un oggetto
  • Quale tra i seguenti pattern non è considerato un pattern strutturale?

    <p>Factory Method</p> Signup and view all the answers

    Quale pattern permette di creare oggetti copiando un oggetto esistente?

    <p>Prototype</p> Signup and view all the answers

    Quale dei seguenti pattern fornisce un'interfaccia semplificata per sistemi complessi?

    <p>Facade</p> Signup and view all the answers

    Quale delle seguenti affermazioni descrive meglio il pattern Composite?

    <p>Compone oggetti in gerarchie di parte-tutto</p> Signup and view all the answers

    Il quale di questi pattern consente di disaccoppiare un’astrazione dalla sua implementazione?

    <p>Bridge</p> Signup and view all the answers

    Quale dei seguenti pattern comportamentali consente di disaccoppiare il mittente di una richiesta dal suo ricevente?

    <p>Chain of Responsibility</p> Signup and view all the answers

    Quale tra i seguenti pattern è progettato per incapsulare una richiesta come un oggetto?

    <p>Command</p> Signup and view all the answers

    In quale pattern comportamentale un oggetto può modificare il suo comportamento in base al suo stato interno?

    <p>State</p> Signup and view all the answers

    Quale design pattern fornisce un'interfaccia per creare oggetti e delega l'istanza alle sottoclassi?

    <p>Factory Method</p> Signup and view all the answers

    Quale pattern consente di salvare e ripristinare lo stato interno di un oggetto senza violare l'incapsulamento?

    <p>Memento</p> Signup and view all the answers

    Quale tra i seguenti pattern definisce una dipendenza uno-a-molti tra oggetti?

    <p>Observer</p> Signup and view all the answers

    Quale pattern consente di definire una famiglia di algoritmi intercambiabili?

    <p>Strategy</p> Signup and view all the answers

    Quale tra i seguenti pattern offre un modo per accedere sequenzialmente agli elementi di una collezione senza esporne la rappresentazione sottostante?

    <p>Iterator</p> Signup and view all the answers

    Qual è la funzione principale del pattern Adapter?

    <p>Convertire i dati da un formato all'altro per facilitare la comunicazione tra oggetti</p> Signup and view all the answers

    Quale tipologia di Adapter utilizza la composizione di oggetti?

    <p>Adapter di oggetti</p> Signup and view all the answers

    Qual è uno dei vantaggi del pattern Adapter?

    <p>Riuso di classi esistenti che non sarebbero altrimenti compatibili</p> Signup and view all the answers

    In quale scenario è particolarmente utile il pattern Adapter?

    <p>Quando si desidera integrare classi con interfacce diverse</p> Signup and view all the answers

    Qual è un esempio pratico di utilizzo dell'Adapter nel settore della tecnologia?

    <p>Un adattatore per convertire dati XML in JSON per un'analisi finanziaria</p> Signup and view all the answers

    Che cosa semplifica l'uso del pattern Adapter per il client?

    <p>L'implementazione di nuove librerie senza modifiche al codice esistente</p> Signup and view all the answers

    Quale delle seguenti affermazioni riguardo l'Adapter di classe è corretta?

    <p>Utilizza l'ereditarietà multipla</p> Signup and view all the answers

    Come l'Adapter gestisce le richieste del client?

    <p>Traducendo le richieste in un formato comprensibile all'oggetto adattato</p> Signup and view all the answers

    Qual è la principale funzione del pattern Composite?

    <p>Creare una struttura ad albero di oggetti.</p> Signup and view all the answers

    Cos'è un Decoratore di base nel pattern Decorator?

    <p>Un componente che delega le richieste a un oggetto concreto.</p> Signup and view all the answers

    Quale vantaggio offre il pattern Decorator rispetto all'ereditarietà?

    <p>Permette di rimuovere responsabilità senza modificare il codice esistente.</p> Signup and view all the answers

    Qual è un esempio pratico dell'utilizzo del pattern Decorator?

    <p>Aggiungere dinamicamente canali di notifica a un Notificatore.</p> Signup and view all the answers

    In quale contesto il pattern Composite è più appropriato?

    <p>Quando si desidera rappresentare oggetti con una struttura gerarchica.</p> Signup and view all the answers

    Qual è una caratteristica dei Decoratori concreti?

    <p>Estendono il decoratore di base aggiungendo responsabilità specifiche.</p> Signup and view all the answers

    Qual è un'importante restrizione del pattern Decorator?

    <p>Richiede che tutti gli oggetti siano della stessa classe.</p> Signup and view all the answers

    Perché è utile il pattern Decorator nelle interfacce utente grafiche?

    <p>Permette di creare elementi complessi senza sovrascrivere il codice base.</p> Signup and view all the answers

    Qual è la principale funzionalità dei metodi opzionali nel contesto del Template Method?

    <p>Consentire alle sottoclassi di sovrascrivere implementazioni generiche</p> Signup and view all the answers

    Quale affermazione descrive meglio la funzione di un hook nel Template Method?

    <p>Consente di estendere l'algoritmo senza modificarne la struttura principale</p> Signup and view all the answers

    Qual è un vantaggio principale dell'utilizzo del pattern Visitor?

    <p>Aggiungere nuove classi senza modificare la gerarchia esistente</p> Signup and view all the answers

    In quale scenario il pattern Visitor si rivela particolarmente utile?

    <p>Quando si desidera mantenere la gerarchia di classi stabile e indipendente da nuove operazioni</p> Signup and view all the answers

    Quale affermazione sui passi del Template Method è corretta?

    <p>Possono essere generici e riutilizzati in diverse sottoclassi</p> Signup and view all the answers

    Qual è l'importanza dell'implementazione di metodi generici nella superclasse?

    <p>Ridurre la complessità delle implementazioni delle sottoclassi</p> Signup and view all the answers

    Cosa può rappresentare una limitazione nell'uso del pattern Visitor?

    <p>La creazione di una nuova classe per ogni operazione</p> Signup and view all the answers

    In cosa differiscono i metodi opzionali dai metodi astratti nel Template Method?

    <p>I metodi opzionali hanno un’implementazione predefinita</p> Signup and view all the answers

    Study Notes

    Modelli Creazionali

    • Si occupano della creazione di oggetti, creando un livello di astrazione tra la creazione delle istanze e la struttura del sistema.
    • Cinque modelli creazionali GoF:
      • Abstract Factory: Fornisce un'interfaccia per creare famiglie di oggetti correlati, senza specifiche concrete.
      • Builder: Separa la costruzione di un oggetto complesso dalla sua rappresentazione.
      • Factory Method: Definisce un'interfaccia per creare oggetti, delegando la decisione di quale classe istanziare alle sottoclassi.
      • Prototype: Crea nuovi oggetti copiando un oggetto prototipo esistente.
      • Singleton: Garantisce che una classe abbia una sola istanza, offrendo un punto di accesso globale.

    Modelli Strutturali

    • Si occupano dell'organizzazione di classi e oggetti in strutture più complesse.
    • Sette modelli strutturali GoF:
      • Adapter: Converte l'interfaccia di una classe in un'altra interfaccia compatibile.
      • Bridge: Disaccoppia un'astrazione dalla sua implementazione, permettendo entrambe di variare indipendentemente.
      • Composite: Componi oggetti in strutture ad albero per rappresentare gerarchie parte-tutto.
      • Decorator: Aggiunge dinamicamente nuove responsabilità a un oggetto.
      • Facade: Fornisce un'interfaccia semplificata a un sistema complesso.
      • Flyweight: Condivide oggetti simili per migliorare l'efficienza della memoria.
      • Proxy: Fornisce un sostituto per un altro oggetto per controllare l'accesso.

    Modelli Comportamentali

    • Si occupano della comunicazione e dell'interazione tra classi e oggetti, definendo come gli oggetti interagiscono e si scambiano messaggi in modo flessibile ed estensibile.
    • Undici modelli comportamentali GoF:
      • Chain of Responsibility: Evita di accoppiare il mittente di una richiesta al suo ricevente, consentendo a più oggetti di gestire la richiesta.
      • Command: Incapsula una richiesta come un oggetto.
      • Interpreter: Definisce una rappresentazione grammaticale di un linguaggio e fornisce un interprete per elaborarlo.
      • Iterator: Fornisce un modo per accedere sequenzialmente agli elementi di una collezione.
      • Mediator: Definisce un oggetto che incapsula il modo in cui un insieme di oggetti interagiscono.
      • Memento: Consente di salvare e ripristinare lo stato interno di un oggetto senza violare l'incapsulamento.
      • Observer: Definisce una dipendenza uno-a-molti tra oggetti, notificando tutti i dipendenti quando un oggetto cambia stato.
      • State: Consente a un oggetto di cambiare il suo comportamento in base al suo stato interno.
      • Strategy: Definisce una famiglia di algoritmi, li incapsula e li rende intercambiabili.
      • Template Method: Definisce lo scheletro di un algoritmo in un metodo, permettendo alle sottoclassi di ridefinire alcuni passi.
      • Visitor: Rappresenta un'operazione da eseguire su elementi di una struttura di oggetti.

    Il Pattern Factory Method

    • Fornisce un'interfaccia per creare oggetti in una superclasse, ma consente alle sottoclassi di modificare i tipi di oggetti creati.
    • Vantaggi:
      • Disaccoppiamento: Il codice client non deve conoscere le classi concrete degli oggetti che sta creando, solo l'interfaccia comune.
      • Sottoclassi flessibili: Le sottoclassi possono decidere quale tipo specifico di oggetto creare, estendendo il comportamento senza modificare le classi esistenti.

    Il Pattern Adapter

    • Permette a due oggetti con interfacce incompatibili di lavorare insieme agendo da intermediario e convertendo i dati tra i due oggetti.
    • Tipi:
      • Adapter di oggetti: Utilizza la composizione di oggetti. L'adattatore mantiene un riferimento all'oggetto adattato e implementa l'interfaccia del client.
      • Adapter di classe: Utilizza l'ereditarietà multipla. L'adattatore eredita sia dall'interfaccia del client che dalla classe dell'oggetto adattato.
    • Vantaggi:
      • Riuso del codice: Permette di riutilizzare classi esistenti che altrimenti non sarebbero compatibili.
      • Flessibilità: Facilita l'introduzione di nuove classi o librerie senza modificare il codice esistente.
      • Trasparenza: Il client non è a conoscenza dell'oggetto adattato, semplificando l'utilizzo del codice.

    Il Pattern Decorator

    • Aggiunge dinamicamente nuove responsabilità a un oggetto avvolgendolo in speciali oggetti wrapper che contengono i comportamenti aggiuntivi.
    • Funzionamento:
      • Componente: Definisce l'interfaccia comune per tutti gli oggetti, sia concreti che decorati.
      • Oggetto concreto: Rappresenta l'oggetto a cui si desidera aggiungere nuove responsabilità.
      • Decoratore di base: Implementa l'interfaccia del componente e contiene un riferimento all'oggetto concreto da decorare.
      • Decoratori concreti: Estendono il decoratore di base e aggiungono nuove responsabilità specifiche all'oggetto concreto.
    • Vantaggi:
      • Flessibilità: Permette di aggiungere e rimuovere responsabilità dinamicamente.
      • Estensione senza modifica: Non modifica il codice dell'oggetto concreto.

    Il Pattern Template Method

    • Definisce lo scheletro di un algoritmo in un metodo e consente alle sottoclassi di ridefinire alcuni passi.
    • Contiene:
      • Passi astratti: Metodi astratti che devono essere implementati dalle sottoclassi.
      • Passi opzionali: Metodi con un'implementazione predefinita nella superclasse, che possono essere sovrascritti dalle sottoclassi.
      • Hook: Metodi opzionali con un corpo vuoto nella superclasse, che offrono alle sottoclassi punti di estensione aggiuntivi per l'algoritmo.

    Il Pattern Visitor

    • Permette di aggiungere nuove operazioni a una gerarchia di oggetti senza modificare le classi degli oggetti stessi.
    • Funzionamento:
      • Introduce una classe "visitor" separata che contiene le operazioni da eseguire sugli oggetti della gerarchia.
    • Vantaggi:
      • Estensione senza modifica delle classi: Permette di aggiungere nuove operazioni senza alterare la gerarchia di classi.
      • Separazione delle responsabilità: Mantiene la gerarchia di classi stabile e indipendente dalle operazioni specifiche.

    Studying That Suits You

    Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

    Quiz Team

    Related Documents

    Description

    Questo quiz esplora i modelli creazionali e strutturali del Design Pattern secondo GoF. Scopri come questi modelli aiutano a creare e organizzare efficacemente oggetti e classi nel tuo sistema. Testa le tue conoscenze sulle diverse tipologie di modelli e il loro utilizzo.

    More Like This

    Factory Design Patterns Quiz
    5 questions
    Software Design Patterns Overview
    12 questions
    Creational Patterns in Design
    29 questions
    Use Quizgecko on...
    Browser
    Browser