Tuesday, February 18, 2014

Design Pattern

Recently I was searching for different design pattern and I came to a very good and easy to learn document.
So I thought to share it with you …
I found it at below link


What is a Design Pattern?
Design Pattern is a re-usable, high quality solution to a given requirement, task or recurring problem. Further, it does not
comprise of a complete solution that may be instantly converted to a code component, rather it provides a framework for how
to solve a problem.
In 1994, the release of the book Design Patterns, Elements of Reusable Object Oriented Software made design patterns
popular.
Because design patterns consist of proven reusable architectural concepts, they are reliable and they speed up software
development process.
Design Patterns are in a continious phase of evolution, which means that they keep on getting better & better as they are
tested against time, reliability and subjected to continious improvements. Further, design patterns have evolved towards
targeting specific domains. For example, windows-based banking applications are usually based on singleton patterns,
e-commerce web applications are based on the MVC (Model-View-Controller) pattern.

Design Patterns are categorized into 3 types:
Creational Patterns
Structural Patterns
Behavioral Patterns
What are Creational Design Patterns?
The Creational Design Patterns focus on how objects are created and utilized in an application. They tackle the aspects of
when and how objects are created, keeping in mind whats the best way these objects should be created.
Listed below are some of the commonly known Creational Design Patterns:
>>> Abstract Factory Pattern
>>> Factory Pattern
>>> Builder Pattern
>>> Lazy Pattern
>>> Prototype Pattern
>>> Singleton Pattern
Whats the difference between Abstract Factory Pattern and Factory Pattern?
In an abstract factory design, a framework is provided for creating sub-components that inherit from a common component.
In .NET, this is achieved by creating classes that implement a common interface or a set of interfaces, where the interface
comprises of the generic method declarations that are passed on to the sub-components. TNote that not just interfaces, but
even abstract classes can provide the platform of creating an application based on the abstract factory pattern.
Example, say a class called CentralGovernmentRules is the abstract factory class, comprised of methods like
ShouldHavePolice() and ShouldHaveCourts(). There may be several sub-classes like State1Rules, State2Rules etc. created
that inheriting the class CentralGovernmentRules, and thus deriving its methods as well.
Note that the term "Factory" refers to the location in the code where the code is created.
A Factory Pattern is again an Object creation pattern. Here objects are created without knowing the class of the object.
Sounds strange? Well, actually this means that the object is created by a method of the class, and not by the class's
constructor. So basically the Factory Pattern is used wherever sub classes are given the priviledge of instantiating a method
that can create an object.
Describe the Builder Design Pattern
In a builder design pattern, an object creation process is separated from the object design construct. This is useful becuase
the same method that deals with construction of the object, can be used to construct different design constructs.
What is the Lazy Design Pattern?
The approach of the Lazy Design Pattern is not to create objects until a specific requirement matches, and when it matches,
object creation is triggered. A simple example of this pattern is a Job Portal application. Say you register yourself in that site
thus filling up the registration table, only when the registration table is filled, the other objects are created and invoked, that
prompt you to fill in other details too, which will be saved in other tables.

What is the Prototype Design Pattern?
A prototype design pattern relies on creation of clones rather than objects. Here, we avoid using the keyword 'new' to prevent
overheads.
What is the Singleton Design Pattern?
The Singleton design pattern is based on the concept of restricting the instantiation of a class to one object. Say one object
needs to perform the role of a coordinator between various instances of the application that depend on a common object, we
may design an application using a Singleton. Usage of Singleton patterns is common in Banking, Financial and Travel based
applications where the singleton object consists of the network related information.
A singleton class may be used to instantiate an object of it, only if that object does not already exist. In case the object exists,
a reference to the existing object is given. A singleton object has one global point of access to it.
An ASP.NET Web Farm is also based on the Singleton pattern. In a Web Farm, the web application resides on several web
servers. The session state is handled by a Singleton object in the form of the aspnet_state.exe, that interacts with the
ASP.NET worker process running on each web server. Note that the worker process is the aspnet_wp.exe process. Imagine
one of the web servers shutting down, the singleton object aspnet_state.exe still maintains the session state information
across all web servers in the web farm.
In .NET, in order to create a singleton, a class is created with a private constructor, and a "static readonly" variable as the
member that behaves as the instance.
What are Structural Design Patterns?
A structural design pattern establishes a relationship between entities. Thus making it easier for different components of an
application to interact with each other. Following are some of the commonly known structural patterns:
>>> Adapter Pattern - Interfaces of classes vary depending on the requirement.
>>> Bridge Pattern - Class level abstraction is separated from its implementation.
>>> Composite Pattern - Individual objects & a group of objects are treated similarly in this approach.
>>> Decorator Pattern - Functionality is assigned to an object.
>>> Facade Pattern - A common interface is created for a group of interfaces sharing a similarity.
>>> Flyweight Pattern - The concept of sharing a group of small sized objects.
>>> Proxy Pattern - When an object is complex and needs to be shared, its copies are made. These copies are called
the proxy objects.
What are the different types of Proxy Patterns?
1 - Remote Proxy - A reference is given to a different object in a different memory location. This may be on a different or a
same machine.
2 - Virtual Proxy - This kind of object is created only & only when really required because of its memory usage.
3 - Cache Proxy - An object that behaves as a temporary storage so that multiple applications may use it. For example, in
ASP.NET when a page or a user control contains the OutputCache directive, that page/control is cached for some time on the
ASP.NET web server.
What is a behavioral design pattern?
Behaviorial design patterns focus on improving the communication between different objects. Following are different types of
behavioral patterns:
>>> Chain Or Responsibilities Pattern - In this pattern, objects communicate with each other depending on logical decisions
made by a class.
>>> Command Pattern - In this pattern, objects encapsulate methods and the parameters passed to them.
>>> Observer Pattern - Objects are created depending on an events results, for which there are event handlers created.
What is the MVC Pattern (Model View Controller Pattern)?
The MVC Pattern (Model View Controller Pattern) is based on the concept of designing an application by dividing its
functionalities into 3 layers. Its like a triad of components. The Model component contains the business logic, or the other set


How many design patterns can be created in .NET?
As many as one can think. Design patterns are not technology specific, rather their foundation relies on the concept of
reusability, object creation and communication. Design patterns can be created in any language.
Describe the Ajax Design Pattern.
In an Ajax Design Pattern, partial postbacks are triggered asyncronously to a web server for getting live data. A web
application would not flicker here, and the web site user would not even come to know that a request is being sent to the web
server for live data.
Such a design pattern is used in applications like Stock Market Websites to get live quotes, News Websites for live news,

Sports websites for live scores etc.




It help me to understand the different design pattern and its working . Hope it help you too.
If you like this please share it .

Regards
Amey
Start where you are. Use what you have.  Do what you can.



No comments:

Post a Comment