Les motifs
Le Gang of Four avait déjà construit un large catalogue
de motifs, catégorisés en motifs de Création
(Abstract Factory, Builder, Factory Method, Prototype, Singleton),
de Structure (Adapter, Bridge, Composite, Decorator, Facade,
Flyweight, Proxy) et de Comportement (Chain of Responsibility,
Command, Interpreter, Iterator, Mediator, Memento, Observer, State,
Strategy, Template Method, Visitor). D'autres motifs et catégories
ont été découverts après sa publication
(notamment le motif MVC). Notre but n'est pas ici de résumer
cet ouvrage ou de vous donner une liste exhaustive, mais de vous
donner une approche des principaux motifs. Rien n'empêche
d'utiliser plusieurs motifs pour un même projet...
Le motif Modèle-Vue-Contrôleur
C'est
le plus utilisé aujourd'hui: il a une place prominente dans
les Struts de Java.
Il vient cependant du monde de Smalltalk, l'un des premiers langages
orientés-objet, et est en fait une combinaison des motifs
Observer, Composite et Strategy.
L'idée
de base de MVC est qu'un programme peut être décomposé
en trois parties:
- le modèle, contenant les données que le programme
utilise,
- la vue, qui indique comment l'interface utilisateur représente
les données,
- le contrôleur, qui fait le lien entre les deux: comme son
nom l'indique, il contrôle la manière dont la vue affiche
le modèle.
L'idée forte de ce motif est la séparation totale
des données, de leur traitement et de leur représentation.
Cela permet de modifier l'interface (ou d'en ajouter d'autres) facilement,
sans avoir à toucher aux classes qui manipulent les données.
Le motif Proxy
Ce motif oblige les appels des méthodes d'un objet à
passer indirectement par un objet proxy qui agit comme un substitut
pour l'autre objet, déléguant les appels de méthodes
à cet objet. Les classes sont créées de telle
sorte que l'objet client ne peut voir qu'il travaille avec un proxy.
C'est un motif général, que l'on retrouve dans de
nombreux autres motifs (Access Proxy, Facade, Remote Proxy, Virtual
Proxy, Decorator), mais qui est rarement utilisé en tant
que tel.
Le motif Observer
Il permet aux objets d'enregistrer dynamiquement les dépendances
entre objets, de telle sorte qu'un objet notifie ceux qui dépendent
de lui lorsqu'il change d'état.
Le motif Visitor
Il présente une manière de séparer un
algorithme de la structure d'un objet, ainsi que de spécifier
comment les itérations se déroulent au sein de la
structure de l'objet.
Un jeu de classes
forme la structure d'un objet. Chacune de ces classes dispose d'une
méthode accepter qui prend
un objet visiteur en argument. Le
visiteur est une interface ayant
différentes méthodes visiter
pour chacune des classes. La méthode accepter
d'une classe appelle ainsi la méthode visiter
qui correspond à sa classe. Des classes visiteur
concrètes et séparées peuvent ainsi être
créées pour accomplir des tâches particulières.
Le motif Singleton
Ce motif est conçu pour restreindre les occurrences
d'une classe au plus petit nombre d'objets (au mieux, un seul).
C'est particulièrement utile quand un seul objet est nécessaire
pour coordonner toutes les actions d'un système.
Il s'implémente
en créant une classe dont une méthode créé
une nouvelle occurrence de l'objet s'il n'y en a pas déjà
une. Si l'objet existe déjà, la méthode renvoi
une référence à cet objet. Pour garantir que
le projet ne peut pas être instancié autrement que
par cette méthode, le constructeur de la classe doit être
privé ou protégé.
Il ne s'agit
là que d'un survol, le meilleur moyen pour se plonger dans
les motifs de conception est de se procurer la documentation complète
de chaque motif, et de trouver celui qui vous permettra de résoudre
vos problèmes. Une fois compris les motifs de conception,
il est difficile de revenir en arrière tant ils facilitent
le développement.
Page 1
| 2
|