Software Design Patterns
Software Design Patterns: Examples in C# for Creational, Structural, Behavioural design patterns.
Creational design patterns
-
Creates an instance of several families of classes
-
Builder
Separates object construction from its representation
-
Factory Method
Creates an instance of several derived classes
-
Object Pool
Avoid expensive acquisition and release of resources by recycling objects that are no longer in use
-
Prototype
A fully initialized instance to be copied or cloned
-
A class of which only a single instance can exist
-
This pattern is used when we want to ensure that only one object of a specific class needs to be created. All future references to the objects are referred to the same underlying instance created.
-
Singleton controls concurrent access to the same resource.
-
It ensures that, there is only one object available across the application in a controller state.
-
Make sure to provide global access to the instance by
- Making sure all constructors of the class is declared as private
- Provide static method that returns a reference to the instance.
- The instance is tored as a private static variable.
- Make sure to delcare class as sealed.
Structural design patterns
-
Match interfaces of different classes
-
Bridge
Separates an object’s interface from its implementation
- Composite
A tree structure of simple and composite objects
- Decorator
Add responsibilities to objects dynamically
- Facade
A single class that represents an entire subsystem
- Flyweight
A fine-grained instance used for efficient sharing
- Private Class Data
Restricts accessor/mutator access
- Proxy
An object representing another object
Behavioral design patterns
- Chain of responsibility
A way of passing a request between a chain of objects
- Command
Encapsulate a command request as an object
- Interpreter
A way to include language elements in a program
- Iterator
Sequentially access the elements of a collection
- Mediator
Defines simplified communication between classes
- Memento
Capture and restore an object's internal state
- Null Object
Designed to act as a default value of an object
- Observer
A way of notifying change to a number of classes
- State
Alter an object's behavior when its state changes
- Strategy
Encapsulates an algorithm inside a class
- Template method
Defer the exact steps of an algorithm to a subclass
- Visitor
Defines a new operation to a class without change