Java e Pattern Designs

Classificazione patterns:

  • creazionali : riguardano la creazione di oggetti
  • strutturali : riguardano la composizione di classi
  • comportamentali : si occupano di come interagiscono tra loro gli oggetti

Creational Patterns

  • Abstract Factory: crea istanze specifiche/appropriate usando la Concrete Factory
  • Concrete Factory: implementa l’interfaccia della AbstractFactory per far si che si fa il giusto override.

Lo stesso (abstract/concrete) per i prodotti.

  • Singleton: una classe la cui istanza é sempre singola.

Structural Patterns

  • Adapter: per matchare interfacce diverse

adapter pattern

  • Bridge: per separare l’interfaccia di un oggetto dalla sua implementazione
  • Decorator: per aggiungere responsabilitá/funzionalitá ad oggetti esistenti dinamicamente

{width=50%}

  • Facade: una classe che rappresenta un insieme di altre classi e maschera la complessitá. Facade Pattern UML

  • Flyweight: un’istanza ‘leggera’ usata per condividere risorse

  • Proxy: Un oggetto che rappresenta un altro oggetto, in genere usato per evitare di istanziare oggetti pesante se non veramente necessari.

{width=50%} {width=50%}

Behavioral Patterns

  • Chain of Responsability: un modo per ‘passare’ una richiesta in una serie di classi a mo’ di catena di montaggio nella quale ogni classe adempie alla propria responsabilitá.
  • Command: incapsula una richiesta in una classe command, per ‘standardizzare’ le richieste.
  • Iterator: per accedere sequenzialmente ad una collezione.
  • Mediator: per semplificare la comunicazione tra classi
  • Memento: per ‘snapshottare’ lo stato di una classe
  • Observer: un modo per notificare agli oggetti ‘Listeners’ o ‘Observers’ un cambiamento sul oggetto osservato.

  • State: un oggetto la cui configurazione cambia a seconda dello stato (che varia a runtime).

  • Strategy: incapsula gli algoritmi all’interno di una classe: utili per quei casi in cui é necessario cambiare/scegliere un algoritmo dinamicamente.

  • Comparator: Implementazione di una generica interfaccia Comprator per comparaare oggetti di tipi diversi.

  • Template Method

  • Visitor

  • MVC:

    • Model: dove risiede la logica dell’applicazione
    • View: visualizza i dati del Model
    • Controller: riceve i comandi dell’utente (generalmente attraverso il View) e li attua modificando lo stato degli altri due componenti