|
|
|
Gof Design Patterns - John COLIBRI
|
|
|
1 - GOF
Cet article a uniquement pour but de fournir le code Delphi des Design Patterns
du livre GOF. GOF est l'abréviation de Gang Of Four, qui est le surnom
donné aux auteurs du livre qui a lancé les Design Patterns:
Erich GAMMA, Richard HELM, Ralph JOHNSON, John VLISSIDES
Design Patterns
Elements of Reusable Object-Oriented Software
Addison Wesley - 1994 - ISBN 0-201-63361-2
http://www.amazon.fr
recherchez "design patterns": c'est le premier présenté
2 - Le codage Delphi
Pour ces 23 programmes
- nous avons essayé de respecter au mieux la syntaxe et les examples du livre
- les programmes, comme ceux du livre, n'ont pas pour but de fournir des
applications ayant une utilité immédiate. La plupart ne calculent et
n'affichent rien (il aurait fallu que toutes les classes soient initialisées
et que le code comporte des message d'affichage). Certaines classes sont
même incomplètes (pas de constructeur, ou même de méthodes)
- en revanche tous les programmes sont compilables:
- il ne manque aucune définition ou aucune classe
- la syntaxe Delphi est respectée
- nous n'avons pas utilisé les attributs de visibilité (PUBLIC, PROTECTED,
PRIVATE) bien que gof les utilisent. En revanche nous avons utilisé le
préfix "_" pour désigner des membre ou méthodes PRIVATE ou PROTECTED.
- notre code n'est pas "minimal": certaines classes ont un CONSTRUCTOR qui
se contente d'appeler INHERITED: nous pourrions le supprimer
- nous n'avons présenté ni schéma UML, ni définition, ni explication de chaque
pattern: voyez le livre "Design Patterns - Gof"
- le découpage de chaque exemple en une ou plusieurs UNITés Delphi est de
notre choix: le livre ne spécifie pas de répartition par fichier. Nous
aurions pu placer chaque pattern dans un seul et même fichier (un .DPR en
mode CONSOLE, par exemple), mais souvent le découpage en UNITés fait mieux
comprendre les dépendances entre les diverses classes.
- le petit interprète d'expression utilisé dans les patterns "facade" et
"interpreter" est une goforisation de notre article
interprète d'expressions.
- chaque fichier comporte le Copyright mentionnant le titre du livre, les
auteurs et l'éditeur.
- mentionnons aussi que vous trouverez sur le Web d'autres sites présentant le
code des patterns Gof, plus ou moins adaptés par leurs auteurs, en C, CPP,
Java ou autre C#. Les codes sont soit dans les pages .HTML, soit
téléchargeables en .ZIP. Les codes présentés dans nos .ZIP ont été tapés
directement à partir du texte du livre.
- Gof a aussi publié "Design Patterns CD". Ce CD contient, semble-t-il:
- le livre consultable électroniquement en hyper texte
- des programmes en C++ et Smalltalk
Voyez AMAZON et recherchez "VLISSIDES" ou un des trois autres auteurs.
Quel est alors finalement l'intérêt de nos .ZIP ?
- ils permettent de suivre les explications du Gof sur des exemples codés en
DELPHI.
- ils peuvent servir de point de départ à des exemples DELPHI plus étoffés
Mais il est certain que nos .ZIP seuls, sans le livre, sont sans grand intérêt:
achetez le livre et lisez le !
Quant aux conventions de codage:
- nous avons respecté les catégories Gof (créationnel, structurel,
comportemental)
- le livre gof présente certaines classes comme des "classes abstraites". Les
exemples du livre ne font aucune distinctions entre les classe abstraites et
les classes d'implémentation. Nous avons donc suivi cette option. Toutefois
nous avons ajouté le commentaire "// -- abstract" pour les classes décrites
par gof comme abstraites. Et si ces classes ne comportent aucun code nous
avons rendues toutes leurs méthodes VIRTUAL; ABSTRACT;. Mentionnons que
nous aurions pu utiliser des INTERFACE COM, ce qui nous aurait éloigné du
livre (dont les exemples sont en CPP, pas en Microsoft).
- les CLASS FUNCTIONs n'ont été utilisées que pour "Singleton"
- pour que chaque pattern soit autonome, certains fichiers sont dupliqués (par
exemple U_MAZE.PAS). Aucune tentative de regroupement ou factorisation n'ont
été tentés. Pour éviter de confondre les versions des fichiers répétés, nous
les avons numérotés (MAZE_1.PAS pour abstract factory, MAZE_2 pour builder
etc)
- le livre utilise un appendice pour définir les listes d'objets et quelques
types géométriques (le point etc). Nous avons utilisé à la place WINDOWS.PAS
(qui contient tPoint), TYPES.PAS (qui contient la fonction Point) et
CLASSES.PAS (qui contient tList)
- pour chacun des 23 exemples
- un répertoire "_xxx\" a été créé (xxx est l'un des 23 noms Gof:
"factory", "visitor" etc)
- chaque projet est nommé P_GOF_XXX.DPR U_GOF_XXX.PA U_GOF_XXX.DFM
- le code des classes Gof est dans l'unité (ou les unités) placées dans le
sous répertoire "GOF\UNITS\".
Chaque projet est contenu dans un .ZIP contenant tous les fichiers
nécessaires. Les fichiers sont indépendants de l'endroit où ils sont
dézippés. Par conséquent:
- téléchargez le .ZIP
- placez-le dans le répertoire de votre choix. Par exemple C:\GOF\
- décompactez le tout
- chargez le .DPR
- compilez si vous souhaitez vérifier que tout est complet
3 - Téléchargez les sources
La liste des patterns est la suivante:
|
|