| Indice
Introduzione
Prefazione
1 Introduzione ai pattern
Perche' i pattern?
Perche' i design pattern?
Perche' Java?
Perche' UML?
Perche' un manuale pratico?
Organizzazione del libro
Benvenuti alla Oozinoz!
Il codice sorgente
Riepilogo
I Pattern di interfaccia
2 Le interfacce Java
Interfacce in Java
Interfacce e contratti
Definire costanti nelle interfacce
Riepilogo
Oltre le interfacce Java
3 Adapter
Adattare interfacce gia' predisposte
Adattatori classe e adattatori oggetto
Adattamenti imprevisti
Riconoscere il pattern Adapter
Riepilogo
4 Facade
Usare Facade per il refactoring
Facade, Utility e Demo
Riepilogo
5 Composite
Un tipico Composite
Comportamento ricorsivo nei Composite
Alberi e teoria dei grafi
Compositi in presenza di cicli
Conseguenze dei cicli
Riepilogo
6 Bridge
Un esempio classico di Bridge: i driver
Usare Bridge per il refactoring
Un Bridge che usa l'interfaccia List
Riepilogo
II Pattern di responsabilita'
7 Responsabilita' degli oggetti
Responsabilita': il caso normale
Controllare la responsabilita' con i modificatori di visibilita'
Riepilogo
Oltre la normale distribuzione di responsabilita'
8 Singleton
La meccanica di Singleton
Singleton e Thread
Riconoscere il pattern Singleton
Riepilogo
9 Observer
Un esempio classico: il pattern Observer nelle librerie Swing
Model/View/Controller
Manutenzione di un oggetto osservabile
Riepilogo
10 Mediator
Un esempio classico: Mediator nelle interfacce grafiche
Mediatori e integrita' relazionale
Riepilogo
11 Proxy
Un esempio classico: proxy di immagini
Riconsiderare i proxy di immagini
Proxy remoti
Riepilogo
12 Chain of responsibility
Tipi di lookup
Usare Chain of Responsibility per il refactoring
Ancorare una catena di oggetti
Chain of Responsibility senza Composite
Riepilogo
13 Flyweight
Riconoscere il pattern Flyweight
Immutabilita'
Estrarre la parte immutabile di un flyweight
Condividere i flyweight
Riepilogo
III Pattern di costruzione
14 La costruzione degli oggetti
La costruzione di oggetti in Java
Collaborazione di un costruttore con la superclasse
Collaborazione di un costruttore all'interno della classe
Riepilogo
15 Builder
Costruzione di oggetti di parser
Costruzione di oggetti in presenza di vincoli
Costruire una controproposta
Riepilogo
16 Factory method
Riconoscere il pattern Factory Method
Un esempio classico di Factory Method. Gli iteratori
Decidere la classe istanziata
Factory Method nella gerarchie parallele
Riepilogo
17 Abstract factory
Factory astratte per famiglie di oggetti
Package e factory astratte
Factory astratte e il Look-and -Feel
Riepilogo
18 Prototype
Prototipi come factory di oggetti
Prototipi e cloni
Usare Object.clone()
Riepilogo
19 Memento
Durata di un memento
Applicare il pattern Memento
Usare Memento da una sessione all'altra
Usare stringhe come memento
Riepilogo
IV Pattern di operazione
20 Le operazioni
Operazioni, metodi e algoritmi
La meccanica dei metodi
Metodi ed eccezioni
Riepilogo
Oltre le normali operazioni
21 Template Method
Un esempio classico di Template Method: l'ordinamento
Completare un algoritmo
Usare gli hook con Template Method
Usare Template Method per il refactoring
Riepilogo
22 State
Modellare gli stati
Usare State per il refactoring
Rendere gli stati costanti
Riepilogo
23 Strategy
Modellare le strategie
Usare Strategy per il refactoring
Confronto tra Strategy e State
Confronto tra Strategy e Template Method
Riepilogo
24 Command
Un esempio classico: comandi di menu
Usare Command per fornire un servizio
Command in relazione ad altri pattern
Riepilogo
25 Interpreter
Un esempio di Interpreter
Interpreti, linguaggi e parser
Riepilogo
V Pattern di estensione
26 Le estensioni in java
Il riutilizzo come alternativa all'estensione
Estendere con l'ereditarieta'
Il Principio di Sostituzione Liskov
Estendere con la delega
Riepilogo
Oltre le normali estensioni
27 Decorator
Un classico esempio di Decorator: gli stream
Decoratori e funzioni
Decorare senza Decorator
Riepilogo
28 Iterator
Collezioni type-safe
Iterare su un oggetto composito
Iteratori e thread
Riepilogo
29 Visitor
Supportare Visitor
Estendere con Visitor
Visitor e cicli
La controversia su Visitor
Riepilogo
Appendice A
Indicazioni
Trarre il piu' possibile da questo libro
Capire i classici
Integrare i pattern nel vostro codice
Continuare a imparare
Appendice B
Le interfacce Java (Capitolo 2)
Adapter (Capitolo 3)
Facade (Capitolo 4)
Composite (Capitolo 5)
Bridge (Capitolo 6)
La responsabilita' degli oggetti (Capitolo 7)
Singleton (Capitolo 8)
Observer (Capitolo 9)
Mediator (Capitolo 10)
Proxy (Capitolo 11)
Chain of Responsability (Capitolo 12)
Flyweight (Capitolo 13)
La costruzione degli oggetti (Capitolo 14)
Builder (Capitolo 15)
Factory Method (Capitolo 16)
Abstracts Factory (Capitolo 17)
Prototype (Capitolo 18)
Memento (Capitolo 19)
Le operazioni (Capitolo 20)
Template Method (Capitolo 21)
State (Capitolo 22)
Strategy (Capitolo 23)
Command (Capitolo 24)
Interpreter (Capitolo 25)
Le estensioni in Java (Capitolo 26)
Decorator (Capitolo 27)
Iterator (Capitolo 28)
Visitor (Capitolo 29)
Appendice C
Uno sguardo a UML
Classi
Relazioni tra classi
Interfacce
Oggetti
Stati
Glossario
Bibliografia
Indice analitico |