« Design Patterns » : différence entre les versions
De Banane Atomic
Aller à la navigationAller à la recherche
(7 versions intermédiaires par le même utilisateur non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
[[Category:CSharp]] | [[Category:CSharp]] | ||
[[Category: | [[Category:Design Patterns]] | ||
= Structural patterns = | |||
* [[Decorator pattern]] | |||
* [[Proxy pattern]] | |||
* [[Bridge pattern]] | |||
* [[Composite pattern]] | |||
* [[Flyweight pattern]] | |||
* [[Adapter pattern]] | |||
* [[Facade pattern]] | |||
= Creational patterns = | |||
* Prototype | |||
* Factory method | |||
* Singleton | |||
= Behavioral patterns = | |||
* Strategy | |||
* State | |||
* Template method | |||
* Chain of responsablity | |||
* Command | |||
* Iterator | |||
* Mediator | |||
* Observer | |||
* Visitor | |||
* Interpreter | |||
* Memento | |||
= [http://www.dofactory.com/Patterns/PatternFactory.aspx Factory Method] = | = [http://www.dofactory.com/Patterns/PatternFactory.aspx Factory Method] = | ||
Permet d'instancier des objets dont les classes (<tt>Lion, Wolf</tt>) ne sont directement connues par l'appelant (<tt>AnimalsFactory</tt>).<br> | Permet d'instancier des objets dont les classes (<tt>Lion, Wolf</tt>) ne sont directement connues par l'appelant (<tt>AnimalsFactory</tt>).<br> |
Dernière version du 7 juin 2020 à 22:09
Structural patterns
- Decorator pattern
- Proxy pattern
- Bridge pattern
- Composite pattern
- Flyweight pattern
- Adapter pattern
- Facade pattern
Creational patterns
- Prototype
- Factory method
- Singleton
Behavioral patterns
- Strategy
- State
- Template method
- Chain of responsablity
- Command
- Iterator
- Mediator
- Observer
- Visitor
- Interpreter
- Memento
Factory Method
Permet d'instancier des objets dont les classes (Lion, Wolf) ne sont directement connues par l'appelant (AnimalsFactory).
Mais elles héritent toutes d'une classe abstraite (Animal) qui elle est connue de l'appelant.
Singleton
public class Singleton { private Singleton() { } private static readonly Singleton _instance = new Singleton(); public static Singleton Instance { get { return _instance; } } } |
Double-checked locking
public class Singleton { private static readonly object Lock = new object(); private static readonly Singleton _instance; private Singleton() { } public static Singleton Instance { get { if (_instance == null) { lock (_lock) { if (_instance == null) { _instance = new Singleton(); } } } } // permet d'implémenter un set, là où Lazy ne le permet pas } } // In .NET Framework 4.0, the Lazy<T> class was introduced, which internally uses double-checked locking by default public class Singleton { private static readonly Lazy<Singleton> _instance = new Lazy<Singleton>(() => new Singleton()); private Singleton() { } public static Singleton Instance { get { return _instance.Value; } } } |
Abstract Factory
Fournit une interface (ContinentFactory) pour créer des familles d'objets (Carnivore, Herbivore) sans avoir besoin de connaitre l'implémentation de ces classes (Lion, Wildebeest, Wolf, Bison).
Builder
Factorise le code de plusieurs