Monday, April 19, 2010

C# Design Patterns

What are design patterns?

Design patterns are documented tried and tested solutions for recurring problems in a given context. So basically you have a problem context and the proposed solution for the same. Design patterns existed in some or other form right from the inception stage of software development. Let's say if you want to implement a sorting algorithm the first thing comes to mind is bubble sort. So the problem is sorting and solution is bubble sort. Same holds true for design patterns.
(I) Which are the three main categories of design patterns?

There are three basic classifications of patterns Creational, Structural, and Behavioral patterns.

Creational Patterns
Abstract Factory: Creates an instance of several families of classes
Builder: Separates object construction from its representation
Factory Method: Creates an instance of several derived classes
Prototype: A fully initialized instance to be copied or cloned
Singleton: A class in which only a single instance can exist

: The best way to remember Creational pattern is by remembering ABFPS (Abraham Became First President of States).

Structural Patterns
Adapter: Match interfaces of different classes.
Bridge: Separates an object's abstraction from its implementation.
Composite: A tree structure of simple and composite objects.
Decorator: Add responsibilities to objects dynamically.
Flyweight: A fine-grained instance used for efficient sharing.
Proxy: An object representing another object.

Note: To remember structural pattern best is (ABCDFFP)

Behavioral Patterns
Mediator: Defines simplified communication between classes.
Memento: Capture and restore an object's internal state.
Interpreter: A way to include language elements in a program.
Iterator: Sequentially access the elements of a collection.
Chain of Resp: A way of passing a request between a chain of objects.
Command: Encapsulate a command request as an object.
State: Alter an object's behavior when its state changes.
Strategy: Encapsulates an algorithm inside a class.
Observer: A way of notifying change to a number of classes.
Template Method: Defer the exact steps of an algorithm to a subclass.
Visitor: Defines a new operation to a class without change.

Note: Just remember Music....... 2 MICS On TV (MMIICCSSOTV).

No comments: