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:
Commentaires Comme d'habitude: - nous vous remercions de nous signaler toute erreur, inexactitude ou
problème de téléchargement en envoyant un e-mail à jcolibri@jcolibri.com. Les corrections qui en résulteront pourront aider les prochains lecteurs
- tous vos commentaires, remarques, questions, critiques, suggestion d'article, ou mentions d'autres sources sur le même sujet seront de même les bienvenus à jcolibri@jcolibri.com.
- plus simplement, vous pouvez taper (anonymement ou en fournissant votre e-mail pour une réponse) vos commentaires ci-dessus et nous les envoyer en cliquant "envoyer" :
- et si vous avez apprécié cet article, faites connaître notre site, ajoutez un lien dans vos listes de liens ou citez-nous dans vos
blogs ou réponses sur les messageries. C'est très simple: plus nous aurons de visiteurs et de références Google, plus nous écrirons d'articles.
|