DESIGN PATTERN EN C#
[email protected] 1
LE GANG OF FOUR (GOF)
En 1994, 4 programmeurs rédigent un
manifeste dans lequel ils référencent
23 problèmes récurrents. En se
basant sur leur expérience, ils
proposent, pour chacun, une
solution qu’ils jugent la meilleure.
• Erich Gamma
• Richard Helm
• Ralph Johnson
• John Vlissides
[email protected] 2
DP DE CRÉATION
• Singleton
• Le singleton garantit qu’une seule instance d’une classe particulière est créée. Toutes les autres références aux
objets de la classe singleton font référence à la même instance.
• Factory
• Le factory est utilisé pour remplacer les constructeurs de classe, en faisant abstraction du processus de génération
de l’objet afin que le type d’objet instancié puisse être déterminé au moment de l’exécution.
• Abstract Factory
• L’Abstract Factory est utulisé pour fournir à un client un ensemble d’objets liés et dépendants. La « famille »
d’objet créées par la Factory est déterminé au moment de l’exécution.
• Builder
• Le builder est utilisé pour créer des objets complexes avec des composants qui doivent être créés dans le même
ordre ou à l’aide d’un algorithme spécifique. Une classe externe contrôle l’algorithme de construction.
• Prototype
• Le Prototype est utilisé pour instancier un nouvel objet en copiant toutes les propriétés d’un objet existant, créant
ainsi un clone indépendant. Cette pratique est particulièrement utile lorsque la construction d’un nouvel objet est
impossible.
[email protected] 3
SINGLETON
[email protected] 4
FACTORY METHOD
[email protected] 5
ABSTRACT FACTORY
[email protected] 6
BUILDER
[email protected] 7
PROTOTYPE
[email protected] 8
DP DE STRUCTURE
• Adapter
• L’Adapter est utilisé pour fournir un lien entre deux types autrement incompatibles en enveloppant le type « adaptée » avec une classe qui prend en
charge l’interface requise par le consommateur.
• Composite
• Le Composite est utilisé pour créé des structures arborescentes hiérarchiques et récursives d’objets associés où tout élément de la structure peut
être accédé et utilisé d’une manière commune.
• Proxy
• Le Proxy est utilisé pour fournir un objet de substitution qui fait référence à un objet sous-jacent. Le proxy fournit la même interface publique que la
classe de l’objet sous-jacent, ajoutant un niveau d’abstraction en contrôlant les demandes d’un client et en les transmettant à l’objet réel si
nécessaire.
• Flyweight
• Le Flyweight est utilisé pour réduire l’utilisation de la mémoire et des ressources pour les modèles complexes contenant plusieurs centaines, milliers
ou centaines de milliers d’objets similaires.
• Facade
• Le Facade est utilisé pour définir une interface simplifiée vers un sous-système plus complexe
• Bridge
• Le Bridge est utilisé pour séparer les éléments abstraits d’une classe des détails ‘implémentation fournissant le moyen de remplacer les détails
d’implémentation sans modifier l’abstraction.
• Decorator
• Le Decorator est utilisé pour étendre ou modifier la fonctionnalité des objets au moment de l’exécution en les enveloppant dans un objet d’une
classe de décorateur. Cela offre une alternative flexible à l’utilisation de l’héritage pour modifier le comportement.
[email protected] 9
ADAPTER
[email protected] 10
COMPOSITE
[email protected] 11
PROXY
[email protected] 12
FLYWEIGHT
[email protected] 13
FACADE
[email protected] 14
BRIDGE
[email protected] 15
DECORATOR
[email protected] 16
DP DE COMPORTEMENT
• Template Method
• Le Template Method est utilisé pour définir les étapes de base d’un algorithme et permettre la mise en œuvre des étapes individuelles à modifier.
• Mediator
• Le Mediator est utilisé pour réduire le couplage entre les classes qui communiquent entre elles. Au lieu de classes communiquant directement, et nécessitant ainsi la
connaissance de leur implémentation, les classes envoient des messages via un médiateur.
• Chain of Responsability
• Le Chain of Responsability est utilisé pour traiter diverses demandes, dont chacune peut être traitée par un gestionnaire différent.
• Observer
• L’Observer est utilisé pour permettre à un objet de publier ses modifications d’état. D’autres objets s’abonnent pour être immédiatement informés de tout changement.
• Strategy
• Le Strategy est utilisé pour créer une famille interchangeabe d’algorithmes à partir de laquelle le processus requis est choisi au moment de l’exécution.
• Visitor
• Le Visitor est utilisé pour séparer un ensemble relativement complexe de classes de données structurées de la fonctionnalité qui peut être effectuée sur les données
qu’elles contiennent.
• Iterator
• L’Iterator est utilisé pour fournir une interface standard pour parcourir une collection d’éléments dans un objet agrégé sans avoir besoin de comprendre sa structure
sous-jacente.
• Interpreter
• L’Interpréter est utilisé pour définir la grammaire des instructions qui font partie d’une langue ou d’une notation, tout en permettant d’étendre facilement la grammaire.
• Memento
• Le Memento est utilisé pour capturer l’état actuel d’un objet et le stocker de telle manière qu’il puisse être restauré ultérieurement sans enfreindre les règles
d’encapsulation.
[email protected] 17
TEMPLATE METHOD
[email protected] 18
MEDIATOR
[email protected] 19
CHAIN OF RESPONSABILITY
[email protected] 20
OBSERVER
[email protected] 21
STRATEGY
[email protected] 22
VISITOR
[email protected] 23
ITERATOR
[email protected] 24
INTERPRETER
[email protected] 25
MEMENTO
[email protected] 26