[BIGNAMI] Design Patterns in Java – Parte 1

Il libro di riferimento è: Design Patterns in Java(TM) (Software Patterns Series) by Steven John Metsker.

Un pattern è *un modo per fare qualcosa*, una tecnica già sperimentata e consolidata per espletare un dato compito.

In modo analogo, un design pattern è un pattern che usa classi e metodi in un linguaggio object oriented per risolvere problemi noti.
Un pattern rappresenta una idea, non una particolare implementazione.

Si possono classificare i Design Patterns secondo i problemi che risolvono:
1. Interfacce (Interfaces)
2. Responsabilità (Responsibility)
3. Costruttori (Construction)
4. Operazioni (Operations)
5. Estensioni (Extensions)

In particolare:

  • Interfaces
    • ADAPTER
    • FACADE
    • COMPOSITE
    • BRIDGE
  • Responsibility
    • SINGLETON
    • OBSERVER
    • MEDIATOR
    • PROXY
    • CHAIN OF RESPONSIBILITY
    • FLYWEIGHT
  • Construction
    • BUILDER
    • FACTORY METHOD
    • ABSTRACT FACTORY
    • PROTOTYPE
    • MEMENTO
  • Operations
    • TEMPLATE METHOD
    • STATE
    • STRATEGY
    • COMMAND
    • INTERPRETER
  • Extensions
    • DECORATOR
    • ITERATOR
    • VISITOR
§INTERFACE PATTERNS§  – INTRODUZIONE ALLE INTERFACCE

Una interfaccia è una collezioni di metodi e variabili che rappresentano la parte visibile della classe che implementa l’interfaccia: in altra parola una interfaccia si può considerare come
*una dichiarazione di intenti*.

Una classe astratta senza metodi non abstract è simile ad una interfaccia, ma rimangono alcune differenze.
Differenze tra abstract classes e interfacce in Java:
– una classe può implementare più di una interfaccia ma non può estendere più di una classe abstract.
– una classe astratta può anche implementare metodi non astratti, mentre tutti i metodi di una interfaccia sono per forza astratti.
– una classe astratta può dichiarare e usare variabili di istanza, una interfaccia non può farlo, può solo creare constanti final e static.
– una classe astratta può avere diversi tipi di accesso ai metodi: public, protected, private o package (default). Tutti i metodi di una interfaccia sono implicitamente public.
– una classe astratta può definire costruttori, una interfaccia non può farlo.

Problema da risolvere e relativo pattern Interfaces:
– adattare l’interfaccia di una classe per corrispondere all’interfaccia che il cliente di aspetta: ADAPTER
– fornire una interfaccia semplice ad una collezioni di classi: FACADE
– definire una interfaccia che possa essere implementata sia da oggetti individuali sia da gruppi di oggetti: COMPOSITE
– disaccoppiare una astrazione dalla sua implementazione in modo che le due parti possano variare in modo indipendente: BRIDGE

Annunci

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...