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

Formed in 2009, the Archive Team (not to be confused with the archive.org Archive-It Team) is a rogue archivist collective dedicated to saving copies of rapidly dying or deleted websites for the sake of history and digital heritage. The group is 100% composed of volunteers and interested parties, and has expanded into a large amount of related projects for saving online and digital history.
