Design Patterns en Java
Les 23 modèles de conception
Éditions Eni
Avant-propos
Partie 1 : Introduction
Chapitre 1-1
Introduction aux patterns de conception
1. Design Patterns ou patterns de conception15
2. La description des patterns de conception17
3. Le catalogue des patterns de conception18
4. Comment choisir et utiliser un pattern de conception pour résoudre un problème20
5. Organisation du catalogue des patterns de conception23
Chapitre 1-2
Une étude de cas : la vente en ligne de véhicules
1. Description du système25
2. Cahier des charges25
3. Prise en compte des patterns de conception27
Partie 2 : Patterns de construction
Chapitre 2-1
Introduction aux patterns de construction
1. Présentation29
2. Les problèmes liés à la création d'objets30
2.1 Problématique30
2.2 Les solutions proposées par les patterns de construction31
Chapitre 2-2
Le pattern Abstract Factory
1. Description33
2. Exemple33
3. Structure36
3.1 Diagramme de classes36
3.2 Participants37
3.3 Collaborations37
4. Domaines d'utilisation37
5. Exemple en Java38
Chapitre 2-3
Le pattern Builder
1. Description45
2. Exemple45
3. Structure47
3.1 Diagramme de classes47
3.2 Participants47
3.3 Collaborations48
4. Domaines d'utilisation49
5. Exemple en Java49
Chapitre 2-4
Le pattern Factory Method
1. Description55
2. Exemple55
3. Structure57
3.1 Diagramme de classes57
3.2 Participants58
3.3 Collaborations58
4. Domaines d'utilisation58
5. Exemple en Java59
Chapitre 2-5
Le pattern Prototype
1. Description63
2. Exemple63
3. Structure66
3.1 Diagramme de classes66
3.2 Participants67
3.3 Collaboration67
4. Domaines d'utilisation67
5. Exemple en Java68
Chapitre 2-6
Le pattern Singleton
1. Description73
2. Exemple73
3. Structure74
3.1 Diagramme de classe74
3.2 Participant74
3.3 Collaboration75
4. Domaine d'utilisation75
5. Exemples en Java75
5.1 La liasse vierge75
5.2 La classe Vendeur76
Partie 3 : Patterns de structuration
Chapitre 3-1
Introduction aux patterns de structuration
1. Présentation79
2. Composition statique et dynamique80
Chapitre 3-2
Le pattern Adapter
1. Description83
2. Exemple83
3. Structure85
3.1 Diagramme de classes85
3.2 Participants86
3.3 Collaborations86
4. Domaines d'application87
5. Exemple en Java87
Chapitre 3-3
Le pattern Bridge
1. Description91
2. Exemple91
3. Structure94
3.1 Diagramme de classes94
3.2 Participants95
3.3 Collaborations95
4. Domaines d'application95
5. Exemple en Java96
Chapitre 3-4
Le pattern Composite
1. Description101
2. Exemple101
3. Structure104
3.1 Diagramme de classes104
3.2 Participants104
3.3 Collaborations105
4. Domaines d'application106
5. Exemple en Java107
Chapitre 3-5
Le pattern Decorator
1. Description109
2. Exemple109
3. Structure114
3.1 Diagramme de classes114
3.2 Participants115
3.3 Collaborations115
4. Domaines d'application115
5. Exemple en Java116
Chapitre 3-6
Le pattern Façade
1. Description119
2. Exemple119
3. Structure122
3.1 Diagramme de classes122
3.2 -Participants123
3.3 Collaborations123
4. Domaines d'application124
5. Exemple en Java125
Chapitre 3-7
Le pattern Flyweight
1. Description129
2. Exemple129
3. Structure132
3.1 Diagramme de classes132
3.2 Participants132
3.3 Collaborations133
4. Domaine d'application133
5. Exemple en Java133
Chapitre 3-8
Le pattern Proxy
1. Description137
2. Exemple137
3. Structure140
3.1 Diagramme de classes140
3.2 Participants141
3.3 Collaborations142
4. Domaines d'application142
5. Exemple en Java142
Partie 4 : Patterns de comportement
Chapitre 4-1
Introduction aux patterns de comportement
1. Présentation145
2. Distribution par héritage ou par délégation146
Chapitre 4-2
Le pattern Chain of Responsibility
1. Description149
2. Exemple149
3. Structure153
3.1 Diagramme de classes153
3.2 Participants153
3.3 Collaborations154
4. Domaines d'application154
5. Exemple en Java154
Chapitre 4-3
Le pattern Command
1. Description159
2. Exemple159
3. Structure163
3.1 Diagramme de classes163
3.2 Participants164
3.3 Collaborations164
4. Domaines d'application165
5. Exemple en Java166
Chapitre 4-4
Le pattern Interpreter
1. Description171
2. Exemple171
3. Structure174
3.1 Diagramme de classes174
3.2 Participants175
3.3 Collaborations175
4. Domaines d'application176
5. Exemple en Java176
Chapitre 4-5
Le pattern Iterator
1. Description183
2. Exemple183
3. Structure186
3.1 Diagramme de classes186
3.2 Participants187
3.3 Collaborations187
4. Domaines d'application187
5. Exemple en Java188
Chapitre 4-6
Le pattern Mediator
1. Description193
2. Exemple193
3. Structure197
3.1 Diagramme de classes197
3.2 Participants197
3.3 Collaborations198
4. Domaines d'application198
5. Exemple en Java198
Chapitre 4-7
Le pattern Memento
1. Description205
2. Exemple205
3. Structure208
3.1 Diagramme de classes208
3.2 Participants208
3.3 Collaborations209
4. Domaines d'application209
5. Exemple en Java209
Chapitre 4-8
Le pattern Observer
1. Description213
2. Exemple213
3. Structure216
3.1 Diagramme de classes216
3.2 Participants217
3.3 Collaborations217
4. Domaines d'application217
5. Exemple en Java218
Chapitre 4-9
Le pattern State
1. Description221
2. Exemple221
3. Structure224
3.1 Diagramme de classes224
3.2 Participants224
3.3 Collaborations225
4. Domaines d'application225
5. Exemple en Java225
Chapitre 4-10
Le pattern Strategy
1. Description231
2. Exemple232
3. Structure234
3.1 Diagramme de classes234
3.2 Participants234
3.3 Collaborations235
4. Domaines d'application235
5. Exemple en Java236
Chapitre 4-11
Le pattern Template Method
1. Description241
2. Exemple241
3. Structure245
3.1 Diagramme de classes245
3.2 Participants246
3.3 Collaborations246
4. Domaines d'application247
5. Exemple en Java247
Chapitre 4-12
Le pattern Visitor
1. Description251
2. Exemple251
3. Structure255
3.1 Diagramme de classes255
3.2 Participants256
3.3 Collaborations256
4. Domaines d'application257
5. Exemple en Java257
Partie 5 : Application des patterns
Chapitre 5-1
Compositions et variations de patterns
1. Préliminaire263
2. Le pattern Pluggable Factory264
2.1 Introduction264
2.2 Structure269
2.3 Exemple en Java270
3. Reflective Visitor277
3.1 Discussion277
3.2 Structure281
3.3 Exemple en Java283
4. Le pattern Multicast290
4.1 Description et exemple290
4.2 Structure293
4.3 Exemple en Java295
4.4 Discussion : comparaison avec le pattern Observer301
Chapitre 5-2
Reconcevoir du code existant
1. Mise en ouvre des patterns pour reconcevoir du code303
2. Composite et Visitor304
2.1 L'exemple initial304
2.2 La mise en ouvre de Composite et Visitor309
3. Template Method318
3.1 L'exemple initial318
3.2 La mise en ouvre de Template Method321
4. Iterator324
4.1 L'exemple initial324
4.2 La mise en ouvre du pattern Iterator327
5. Chain of Responsibility331
5.1 L'exemple initial331
5.2 La mise en ouvre du pattern Chain of Responsibility338
6. State343
6.1 L'exemple initial343
6.2 La mise en ouvre du pattern State345
7. Observer348
7.1 L'exemple initial348
7.2 La mise en ouvre du pattern Observer352
8. Decorator357
8.1 L'exemple initial357
8.2 La mise en ouvre du pattern Decorator361
9. Command367
9.1 L'exemple initial367
9.2 La mise en ouvre du pattern Command374
Chapitre 5-3
Le pattern composite MVC
1. Introduction au problème381
2. Le pattern composite MVC382
3. Le framework Vaadin389
4. Exemple en Java390
4.1 Introduction390
4.2 Architecture391
4.3 Étude du code393
Chapitre 5-4
Les patterns dans la conception de logiciels
1. Modélisation et conception avec les patterns de conception405
2. Autres apports des patterns de conception408
2.1 Un référentiel commun408
2.2 Un ensemble récurrent de techniques de conception408
2.3 Un outil pédagogique de l'approche à objets408
Partie 6 : Annexes
Annexe 1
Java avancé et conception par objets
1. Les concepts avancés de la programmation par objets409
1.1 Le typage des variables409
1.2 La liaison dynamique410
1.3 La surcharge des méthodes412
1.4 La généricité415
1.4.1 La notion de classe générique415
1.4.2 L'instanciation des paramètres de type419
1.4.3 La généricité et l'héritage425
1.5 Les interfaces427
1.5.1 La réalisation des interfaces427
1.5.2 La spécialisation des interfaces428
1.5.3 La différence entre les classes abstraites et les interfaces428
1.6 Les classes internes : un support pour la composition d'objets429
2. Les principes de la conception par objets431
2.1 La réification431
2.2 La conception modulaire432
2.3 L'abstraction434
2.4 La réutilisation des classes436
Chapitre 6-2
Exercices
1. Énoncés des exercices439
1.1 Création de cartes de paiement439
1.1.1 Création en fonction du client439
1.1.2 Création à l'aide d'une fabrique440
1.2 Autorisation des cartes de paiement440
1.3 Système de fichiers440
1.4 Browser graphique d'objets441
1.5 États de la vie professionnelle d'une personne442
1.6 Cache d'un dictionnaire persistant d'objets442
2. Correction des exercices445
2.1 Création de cartes de paiement445
2.1.1 Création en fonction du client445
2.1.2 Création à l'aide d'une fabrique446
2.2 Autorisation des cartes de paiement446
2.3 Système de fichiers447
2.4 Browser graphique d'objets453
2.5 États de la vie professionnelle d'une personne455
2.6 Cache d'un dictionnaire persistant d'objets457
Index