Design Patterns en PHP
Les 23 modèles de conception : descriptions et solutions illustrées en UML2 et PHP
2e édition
Avant-propos
Partie 1 : Introduction
Chapitre 1
Introduction aux design patterns
1. Principes de base du concepteur objet15
1.1 Les principes SOLID15
1.1.1 Le principe de responsabilité unique16
1.1.2 Ouvert à l'extension mais fermé à la modification18
1.1.3 Le principe de substitution de Liskov19
1.1.4 Séparation des interfaces20
1.1.5 L'inversion des dépendances21
2. Design patterns ou modèles de conception22
3. Description des design patterns23
4. Catalogue des design patterns24
5. Organisation du catalogue des design patterns26
6. Aspects spécifiques des exemples de code PHP27
Chapitre 2
Une étude de cas : la vente en ligne de véhicules
1. Description du système29
2. Cahier des charges29
3. Prise en compte des design patterns31
Partie 2 : Design patterns de construction
Chapitre 3
Introduction aux design patterns de construction
1. Présentation33
2. Problèmes liés à la création d'objets34
2.1 Problématique34
2.2 Solutions proposées par les design patterns de construction35
Chapitre 4
Le design pattern Abstract Factory
1. Description37
2. Exemple37
3. Structure40
3.1 Diagramme de classes40
3.2 Participants41
3.3 Collaborations41
4. Domaines d'utilisation42
5. Exemple en PHP42
Chapitre 5
Le design pattern Builder
1. Description49
2. Exemple49
3. Structure51
3.1 Diagramme de classes51
3.2 Participants52
3.3 Collaborations52
4. Domaines d'utilisation53
5. Exemple en PHP54
Chapitre 6
Le design pattern Factory Method
1. Description59
2. Exemple59
3. Structure61
3.1 Diagramme de classes61
3.2 Participants62
3.3 Collaborations62
4. Domaines d'utilisation62
5. Exemple en PHP63
Chapitre 7
Le design pattern Prototype
1. Description67
2. Exemple67
3. Structure70
3.1 Diagramme de classes70
3.2 Participants71
3.3 Collaboration71
4. Domaines d'utilisation71
5. Exemple en PHP72
Chapitre 8
Le design pattern Singleton
1. Description79
2. Exemple79
3. Structure80
3.1 Diagramme de classes80
3.2 Participants80
3.3 Collaboration81
4. Domaine d'utilisation81
5. Exemples en PHP81
5.1 La liasse vierge81
5.2 La classe Vendeur83
Partie 3 : Design patterns de structuration
Chapitre 9
Introduction aux design patterns de structuration
1. Présentation85
2. Composition statique et dynamique86
Chapitre 10
Le design pattern Adapter
1. Description89
2. Exemple89
3. Structure91
3.1 Diagramme de classes91
3.2 Participants91
3.3 Collaborations92
4. Domaines d'application92
5. Exemple en PHP93
Chapitre 11
Le design pattern Bridge
1. Description97
2. Exemple97
3. Structure100
3.1 Diagramme de classes100
3.2 Participants101
3.3 Collaborations101
4. Domaines d'application102
5. Exemple en PHP102
Chapitre 12
Le design pattern Composite
1. Description109
2. Exemple109
3. Structure112
3.1 Diagramme de classes112
3.2 Participants112
3.3 Collaborations113
4. Domaines d'application114
5. Exemple en PHP115
Chapitre 13
Le design pattern Decorator
1. Description119
2. Exemple119
3. Structure124
3.1 Diagramme de classes124
3.2 Participants125
3.3 Collaborations125
4. Domaines d'application125
5. Exemple en PHP126
Chapitre 14
Le design pattern Facade
1. Description129
2. Exemple129
3. Structure132
3.1 Diagramme de classes132
3.2 Participants133
3.3 Collaborations133
4. Domaines d'application134
5. Exemple en PHP135
Chapitre 15
Le design pattern Flyweight
1. Description141
2. Exemple141
3. Structure144
3.1 Diagramme de classes144
3.2 Participants145
3.3 Collaborations145
4. Domaine d'application145
5. Exemple en PHP146
Chapitre 16
Le design pattern Proxy
1. Description151
2. Exemple151
3. Structure155
3.1 Diagramme de classes155
3.2 Participants156
3.3 Collaborations156
4. Domaines d'application156
5. Exemple en PHP157
Partie 4 : Design Patterns de comportement
Chapitre 17
Introduction aux design patterns de comportement
1. Présentation161
2. Distribution par héritage ou par délégation162
Chapitre 18
Le design pattern Chain of Responsibility
1. Description165
2. Exemple165
3. Structure169
3.1 Diagramme de classes169
3.2 Participants170
3.3 Collaborations170
4. Domaines d'application170
5. Exemple en PHP171
Chapitre 19
Le design pattern Command
1. Description177
2. Exemple177
3. Structure181
3.1 Diagramme de classes181
3.2 Participants182
3.3 Collaborations182
4. Domaines d'application184
5. Exemple en PHP184
Chapitre 20
Le design pattern Interpreter
1. Description193
2. Exemple193
3. Structure196
3.1 Diagramme de classes196
3.2 Participants197
3.3 Collaborations197
4. Domaines d'application198
5. Exemple en PEIP198
Chapitre 21
Le design pattern Iterator
1. Description205
2. Exemple205
3. Structure207
3.1 Diagramme de classes207
3.2 Participants207
3.3 Collaborations208
4. Domaines d'application208
5. Exemple en PHP208
Chapitre 22
Le design pattern Mediator
1. Description213
2. Exemple213
3. Structure217
3.1 Diagramme de classes217
3.2 Participants217
3.3 Collaborations218
4. Domaines d'application218
5. Exemple en PHP218
Chapitre 23
Le design pattern Memento
1. Description225
2. Exemple225
3. Structure 228
3.1 Diagramme de classes228
3.2 Participants228
3.3 Collaborations229
4. Domaines d'application229
5. Exemple en PHP229
Chapitre 24
Le design pattern Observer
1. Description237
2. Exemple237
3. Structure240
3.1 Diagramme de classes240
3.2 Participants241
3.3 Collaborations241
4. Domaines d'application241
5. Exemple en PHP242
Chapitre 25
Le design pattern State
1. Description247
2. Exemple247
3. Structure251
3.1 Diagramme de classes251
3.2 Participants251
3.3 Collaborations252
4. Domaines d'application252
5. Exemple en PHP252
Chapitre 26
Le design pattern Strategy
1. Description261
2. Exemple262
3. Structure264
3.1 Diagramme de classes264
3.2 Participants264
3.3 Collaborations265
4. Domaines d'application265
5. Exemple en PHP266
Chapitre 27
Le design pattern Template Method
1. Description271
2. Exemple271
3. Structure276
3.1 Diagramme de classes276
3.2 Participants276
3.3 Collaborations277
4. Domaines d'application277
5. Exemple en PHP277
Chapitre 28
Le design pattern Visitor
1. Description281
2. Exemple281
3. Structure285
3.1 Diagramme de classes285
3.2 Participants286
3.3 Collaborations286
4. Domaines d'application287
5. Exemple en PHP287
Partie 5 : Application des design patterns
Chapitre 29
Compositions et variations de design patterns
1. Préliminaire293
2. Le design pattern Pluggable Factory294
2.1 Introduction294
2.2 Structure299
2.3 Exemple en PHP300
3. Le design pattern Reflective Visitor308
3.1 Discussion308
3.2 Structure312
3.3 Exemple en PHP314
4. Le design pattern Multicast321
4.1 Description et exemple321
4.2 Structure324
4.3 Exemple en PHP325
4.4 Discussion : comparaison avec le design pattern Observer332
Chapitre 30
Le design pattern composite MVC
1. Introduction au problème333
2. Le design pattern composite MVC334
3. Exemple en PHP341
3.1 Introduction341
3.2 Architecture343
3.3 Étude du code344
Chapitre 31
Les design patterns dans la conception de logiciels
1. Modélisation et conception avec les design patterns363
2. Autres apports des design patterns366
2.1 Un référentiel commun366
2.2 Un ensemble récurrent de techniques de conception366
2.3 Un outil pédagogique de l'approche orientée objet366
3. Des pratiques bien répandues367
Annexe
Exercices
1. Énoncés des exercices369
1.1 Création de cartes de paiement369
1.1.1 Création en fonction du client369
1.1.2 Création à l'aide d'une fabrique370
1.2 Autorisation des cartes de paiement370
1.3 Système de fichiers370
1.4 Browser graphique d'objets371
1.5 Etats de la vie professionnelle d'une personne372
1.6 Cache d'un dictionnaire persistant d'objets372
2. Correction des exercices375
2.1 Création de cartes de paiement375
2.1.1 Création en fonction du client375
2.1.2 Création à l'aide d'une fabrique376
2.2 Autorisation des cartes de paiement377
2.3 Système de fichiers378
2.4 Browser graphique d'objets385
2.5 États de la vie professionnelle d'une personne386
2.6 Cache d'un dictionnaire persistant d'objets387
Index389