Les différents Design Patterns
Creational
Factory : Définit une interface de création d'objet. Permet à la classe de laisser à une sous classe le soin de créer l'objet.
Singleton : Assure que la classe n'a qu'une seule instance et fournit un point d'accès unique à celle-ci.
Structural
Adapter : Convertit l'interface d'un classe en une autre interface attendue par le client. Permet à des classes d'interfaces différentes de travailler ensemble.
Bridge : Découple l'abstraction de l'implémentation ainsi les deux peuvent évoluer de manière indépendante.
Composite : Compose des objets en structure en arbre pour représenter leur hierarchies. Permet au client de s'adresser à des compositions d'objets.
Decorator : Attache des responsabilités additionnelles à un objet de manière dynamique. Le Decorator permet une alternative flexibles à l'utilisation de sous classes pour étendre les fonctionalités.
Behavioral
Interpreter : Donne un langage, défini une représentation de sa grammaire. Interprète les commande d'un langage.
Command : Encapsule les requêtes comme des objets. Laisse la possibilité de paramétrer les clients avec différentes requêtes, queue ou log-request.
Iterator : Fournit un moyen d'accéder aux éléments d'une aggrégation de manière séquentielle.
Strategy : Défini une famille d'algorithme, les encapsule et le rend interchangeable. Permet de faire évoluer les algorithmes suivant l'utilisation du client.
Memento: Sans violer l'encapsulation, capture et externalise les objets et les états internes de l'objet afin de pouvoir le restaurer plus tard.
Règles de construction
- Ne pas confondre héritage de classe et héritage d'interface
Héritage de classe: on passe un objet particulier existant dans les méthodes
Héritage d'interface : la méthode attend un objet répondant à cette interface, l'objet n'est pas signé et peut-être crée au moyen d'un pattern creational.
"Program to an Interface not an implementation"
- Héritage et composition
Il est facile de croire que l'héritage permet une bonne re-usabilité, parfois c'est un leure, la composition permet de mettre en oeuvre des méchanisme plus simple. La composition peut placer une interface sur une colloboration d'objet, ce qui masque la complexité de l'extérieur, l'héritage ne le permet pas.
"Favor object composition over class inheritance"
Sources:Elements of Reusable Object-Oriented Software,
- Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides (GOF)
Inscription à :
Publier les commentaires (Atom)
Aucun commentaire:
Enregistrer un commentaire