<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="https://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:gd='http://schemas.google.com/g/2005' xmlns:georss='http://www.georss.org/georss' xmlns:thr='http://purl.org/syndication/thread/1.0' xmlns:blogger='http://schemas.google.com/blogger/2008'><id>tag:blogger.com,1999:blog-6109902428394591235</id><updated>2024-09-09T11:25:32.387+05:30</updated><category term='Design Patterns'/><category term='.NET 3.0'/><category term='Azure'/><category term='Free'/><category term='Visual Studio'/><category term='LINQ'/><category term='ActiveDirectory'/><category term='Tools'/><category term='Windows Phone'/><category term='Windows'/><category term='Unified Communication'/><category term='Interop'/><category term='OBAs'/><category term='BizTalk'/><category term='Tips'/><category term='News'/><category term='Game'/><category term='Internet Explorer'/><category term='Volta'/><category term='WPF'/><category term='Vista'/><category term='Exchange Server'/><category term='IIS'/><category term='Workflow (WF)'/><category term='Web Services'/><category term='Silverlight'/><category term='Security'/><category term='ALM'/><category term='Me'/><category term='Productivity'/><category term='Windows Live Writer'/><category term='SandCastle'/><category term='Sharepoint'/><category term='Software Development'/><category term='XNA Gaming'/><category term='Enterprise Library'/><category term='XML'/><category term='Tutorials'/><category term='ADO.NET'/><category term='ASP.NET'/><category term='.NET'/><category term='Office'/><category term='Testing'/><category term='SQL Server'/><category term='Cloud'/><category term='CSharp'/><category term='WCF'/><category term='Architecture'/><category term='OSLO'/><category term='LIVE'/><category term='SOA'/><category term='Performance'/><title type='text'>Technology Blog - Vikas Goyal</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='https://dotnetwithme.blogspot.com/feeds/posts/summary/-/Design+Patterns'/><link rel='self' type='application/atom+xml' href='https://dotnetwithme.blogspot.com/feeds/posts/summary/-/Design+Patterns'/><link rel='alternate' type='text/html' href='http://dotnetwithme.blogspot.com/search/label/Design%20Patterns'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Vikas Goyal</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='35' height='35' src='//www.blogger.com/img/blogger_logo_round_35.png'/></author><generator version='7.00' uri='https://www.blogger.com'>Blogger</generator><openSearch:totalResults>17</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6109902428394591235.post-4852726908281183448</id><published>2011-07-14T11:43:00.001+05:30</published><updated>2011-07-14T11:43:29.876+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Internet Explorer'/><category scheme='http://www.blogger.com/atom/ns#' term='Design Patterns'/><category scheme='http://www.blogger.com/atom/ns#' term='IIS'/><title type='text'>On Demand training on latest web technologies</title><summary type='text'>  &amp;#160;  Programming with HTML5 and related technologies  http://www.microsoft.com/showcase/en/in/details/4f39070b-c435-4de5-9f50-0d2852c1dfbe  Visual Studio 2010 SP1 for Web Developers   http://www.microsoft.com/showcase/en/in/details/90b79e80-eae9-47c8-a4f4-a2431e62178d  ASP.NET MVC3 Development with Visual Studio 2010  http://www.microsoft.com/showcase/en/in/details/fd907f28-bcbd-4a00-871f-</summary><link rel='replies' type='application/atom+xml' href='https://dotnetwithme.blogspot.com/feeds/4852726908281183448/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://dotnetwithme.blogspot.com/2011/07/on-demand-training-on-latest-web.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6109902428394591235/posts/default/4852726908281183448'/><link rel='self' type='application/atom+xml' href='https://dotnetwithme.blogspot.com/feeds/posts/default/4852726908281183448'/><link rel='alternate' type='text/html' href='https://dotnetwithme.blogspot.com/2011/07/on-demand-training-on-latest-web.html' title='On Demand training on latest web technologies'/><author><name>Vikas Goyal</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='35' height='35' src='//www.blogger.com/img/blogger_logo_round_35.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRGE_GU_psmMRZSkCpfIlZydTwIzpIOaUfHBXeDO_ZTwjrmsd2AJrf_ikfbaYMxvsqgGkkHu9otKkXmzDPyycVp3z_r2wOUOx4aUGHCg2DT5tujsM2c8nhyNwHSB2Pik3JktfaWzgDWEQ/s72-c/?imgmax=800' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6109902428394591235.post-4959212117976067984</id><published>2008-02-06T15:35:00.001+05:30</published><updated>2008-02-06T15:35:04.467+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='CSharp'/><category scheme='http://www.blogger.com/atom/ns#' term='Design Patterns'/><title type='text'>* Patterns : Iterator Behavioral Pattern</title><summary type='text'>Iterator Behavioral Pattern provides an access interface to an aggregate or collection object for clients. The iterator abstracts the clients from how the collection has been structured and also provides sequential navigation capabilities over collection.  Consider the following class diagram :     NodeCollection type holds objects of type Node and there are two Iterators provided for </summary><link rel='replies' type='application/atom+xml' href='https://dotnetwithme.blogspot.com/feeds/4959212117976067984/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://dotnetwithme.blogspot.com/2008/02/patterns-iterator-behavioral-pattern.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6109902428394591235/posts/default/4959212117976067984'/><link rel='self' type='application/atom+xml' href='https://dotnetwithme.blogspot.com/feeds/posts/default/4959212117976067984'/><link rel='alternate' type='text/html' href='https://dotnetwithme.blogspot.com/2008/02/patterns-iterator-behavioral-pattern.html' title='* Patterns : Iterator Behavioral Pattern'/><author><name>Vikas Goyal</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='35' height='35' src='//www.blogger.com/img/blogger_logo_round_35.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.google.com/vikasgoyal77/R6mGT2fuDuI/AAAAAAAAAYU/w2cwLRsUnDg/s72-c/Iterator%5B5%5D' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6109902428394591235.post-5531406295209111453</id><published>2008-01-28T15:55:00.001+05:30</published><updated>2008-01-28T15:55:21.552+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='CSharp'/><category scheme='http://www.blogger.com/atom/ns#' term='Design Patterns'/><title type='text'>* Patterns : Interpreter Behavioral Pattern</title><summary type='text'>Interpreter Behavioral Pattern as name suggests is used to interpret sentences in langauge provided represented in a particular form.  The langauge should be representable in form of abstract syntax tree. Two types of nodes are used for expressions : Terminal Expressions &amp;amp; Non-Terminal Expressions.  Let's take an example of a command line calculator which can take expressoins in form of a+b-c</summary><link rel='replies' type='application/atom+xml' href='https://dotnetwithme.blogspot.com/feeds/5531406295209111453/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://dotnetwithme.blogspot.com/2008/01/patterns-interpreter-behavioral-pattern.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6109902428394591235/posts/default/5531406295209111453'/><link rel='self' type='application/atom+xml' href='https://dotnetwithme.blogspot.com/feeds/posts/default/5531406295209111453'/><link rel='alternate' type='text/html' href='https://dotnetwithme.blogspot.com/2008/01/patterns-interpreter-behavioral-pattern.html' title='* Patterns : Interpreter Behavioral Pattern'/><author><name>Vikas Goyal</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='35' height='35' src='//www.blogger.com/img/blogger_logo_round_35.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.google.com/vikasgoyal77/R52tkGfuDtI/AAAAAAAAAYM/-u5FhA4xxaw/s72-c/Interpreter%5B5%5D' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6109902428394591235.post-1237690430914723412</id><published>2008-01-15T12:50:00.001+05:30</published><updated>2008-01-15T12:50:18.218+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tutorials'/><category scheme='http://www.blogger.com/atom/ns#' term='Architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='CSharp'/><category scheme='http://www.blogger.com/atom/ns#' term='Design Patterns'/><title type='text'>* Patterns : Command Behavioral Pattern</title><summary type='text'>Command Patterns helps encapculating/mapping a request to object called command. All commands are derived from base command which has mainly two methods Execute &amp;amp; UnExecute. The commands forwards the request data to Receiver for further processing.   Either client can decide which Command and&amp;#160; Receiver to be invoked or it can be configuration based for loose coupling.  One of the popular</summary><link rel='replies' type='application/atom+xml' href='https://dotnetwithme.blogspot.com/feeds/1237690430914723412/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://dotnetwithme.blogspot.com/2008/01/patterns-command-behavioral-pattern.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6109902428394591235/posts/default/1237690430914723412'/><link rel='self' type='application/atom+xml' href='https://dotnetwithme.blogspot.com/feeds/posts/default/1237690430914723412'/><link rel='alternate' type='text/html' href='https://dotnetwithme.blogspot.com/2008/01/patterns-command-behavioral-pattern.html' title='* Patterns : Command Behavioral Pattern'/><author><name>Vikas Goyal</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='35' height='35' src='//www.blogger.com/img/blogger_logo_round_35.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.google.com/vikasgoyal77/R4xerf2j80I/AAAAAAAAAXI/VStq7JIWORk/s72-c/Command%5B5%5D' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6109902428394591235.post-7883473060016458763</id><published>2008-01-10T16:14:00.001+05:30</published><updated>2008-01-10T16:14:15.537+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tutorials'/><category scheme='http://www.blogger.com/atom/ns#' term='Architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='CSharp'/><category scheme='http://www.blogger.com/atom/ns#' term='Design Patterns'/><title type='text'>* Patterns : ChainOfResponsibility Behavioral Pattern</title><summary type='text'>ChainOfResponsibility Behavioral Pattern helps achieving loose coupling between request sender and receiver object.  It helps in introducing a set of chained interceptor objects which can handle the request or pass it to next member in chain. The chaining can be pre-configured or can be done by client before invoking the chain.  Consider the below class diagram:     Based on the base exception </summary><link rel='replies' type='application/atom+xml' href='https://dotnetwithme.blogspot.com/feeds/7883473060016458763/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://dotnetwithme.blogspot.com/2008/01/patterns-chainofresponsibility.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6109902428394591235/posts/default/7883473060016458763'/><link rel='self' type='application/atom+xml' href='https://dotnetwithme.blogspot.com/feeds/posts/default/7883473060016458763'/><link rel='alternate' type='text/html' href='https://dotnetwithme.blogspot.com/2008/01/patterns-chainofresponsibility.html' title='* Patterns : ChainOfResponsibility Behavioral Pattern'/><author><name>Vikas Goyal</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='35' height='35' src='//www.blogger.com/img/blogger_logo_round_35.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.google.com/vikasgoyal77/R4X2_v2j8zI/AAAAAAAAAXA/qwCbA0oXySQ/s72-c/ChainOfResponsibility%5B5%5D' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6109902428394591235.post-2924288818188198377</id><published>2007-11-06T11:02:00.001+05:30</published><updated>2007-11-06T11:02:23.842+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Tutorials'/><category scheme='http://www.blogger.com/atom/ns#' term='Architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='CSharp'/><category scheme='http://www.blogger.com/atom/ns#' term='Design Patterns'/><title type='text'>* Patterns : Flyweight Structural Pattern</title><summary type='text'>Flyweight Structural Pattern is used to manage large number of shared objects. They are maintained in a collection and same instances used whenever required. These objects have their own attributes/features but they can have a common feature also which can be externalized.  Consider a scenario where a picture has to be drawn which consists of large numbers of polygons of different colors. All </summary><link rel='replies' type='application/atom+xml' href='https://dotnetwithme.blogspot.com/feeds/2924288818188198377/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://dotnetwithme.blogspot.com/2007/11/patterns-flyweight-structural-pattern.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6109902428394591235/posts/default/2924288818188198377'/><link rel='self' type='application/atom+xml' href='https://dotnetwithme.blogspot.com/feeds/posts/default/2924288818188198377'/><link rel='alternate' type='text/html' href='https://dotnetwithme.blogspot.com/2007/11/patterns-flyweight-structural-pattern.html' title='* Patterns : Flyweight Structural Pattern'/><author><name>Vikas Goyal</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='35' height='35' src='//www.blogger.com/img/blogger_logo_round_35.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.google.com/vikasgoyal77/Ry_8ZkUoCDI/AAAAAAAAANU/8wI8FNGm5Bo/s72-c/FlyWeight_thumb%5B12%5D.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6109902428394591235.post-3939910360376152678</id><published>2007-10-18T16:09:00.001+05:30</published><updated>2007-10-18T16:09:43.493+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Tutorials'/><category scheme='http://www.blogger.com/atom/ns#' term='Architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='CSharp'/><category scheme='http://www.blogger.com/atom/ns#' term='Design Patterns'/><title type='text'>* Patterns : Facade Structural Pattern</title><summary type='text'>'Facade Structural Pattern' is primarily used to unify and simply a set of interfaces of subsystems. This helps the client in using the interface with less effort.  Consider the class diagram below :       Above shows a typical scenario of a Bank where a new Customer approaches the Bank to open new account and also deposit some initial amount.    The Core Banking subsystems provide two different </summary><link rel='replies' type='application/atom+xml' href='https://dotnetwithme.blogspot.com/feeds/3939910360376152678/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://dotnetwithme.blogspot.com/2007/10/patterns-facade-structural-pattern.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6109902428394591235/posts/default/3939910360376152678'/><link rel='self' type='application/atom+xml' href='https://dotnetwithme.blogspot.com/feeds/posts/default/3939910360376152678'/><link rel='alternate' type='text/html' href='https://dotnetwithme.blogspot.com/2007/10/patterns-facade-structural-pattern.html' title='* Patterns : Facade Structural Pattern'/><author><name>Vikas Goyal</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='35' height='35' src='//www.blogger.com/img/blogger_logo_round_35.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.google.com/vikasgoyal77/Rxc360CC3iI/AAAAAAAAAMM/pRjlRbDj8lA/s72-c/Facade12.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6109902428394591235.post-3576430336697413225</id><published>2007-10-15T15:52:00.001+05:30</published><updated>2007-10-15T15:52:00.295+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='CSharp'/><category scheme='http://www.blogger.com/atom/ns#' term='Design Patterns'/><title type='text'>* Patterns : Decorator Structural Pattern</title><summary type='text'>The primary use of 'Decorator Structural Pattern' is to add behaviors to object at runtime. It generally involves wrapping the original object with the decorator object which adds the new behaviors but keep the structure of original object intact. Multiple behaviors can be added out of given options based on decision criteria.  Consider the class diagram below :       There is a BookBase class </summary><link rel='replies' type='application/atom+xml' href='https://dotnetwithme.blogspot.com/feeds/3576430336697413225/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://dotnetwithme.blogspot.com/2007/10/patterns-decorator-structural-pattern.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6109902428394591235/posts/default/3576430336697413225'/><link rel='self' type='application/atom+xml' href='https://dotnetwithme.blogspot.com/feeds/posts/default/3576430336697413225'/><link rel='alternate' type='text/html' href='https://dotnetwithme.blogspot.com/2007/10/patterns-decorator-structural-pattern.html' title='* Patterns : Decorator Structural Pattern'/><author><name>Vikas Goyal</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='35' height='35' src='//www.blogger.com/img/blogger_logo_round_35.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.google.com/vikasgoyal77/RxM_RkCC3hI/AAAAAAAAALU/OtFvSkV5DGg/s72-c/Decorator%5B7%5D.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6109902428394591235.post-3949721829426923222</id><published>2007-10-09T10:08:00.001+05:30</published><updated>2007-10-09T10:08:57.103+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Tutorials'/><category scheme='http://www.blogger.com/atom/ns#' term='Architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='CSharp'/><category scheme='http://www.blogger.com/atom/ns#' term='Design Patterns'/><title type='text'>* Patterns : Composite Structural Pattern</title><summary type='text'>Composite Structural Pattern is applicable when you need to deal with whole-part kind of relationships or tree kind of structures. It helps client to deal with individual or composite objects in a uniform manner and thus abstracts the client from complexities of internal structure.  Consider the following class diagram :       In the above diagram Book is a simple type but LibrarySection is a </summary><link rel='replies' type='application/atom+xml' href='https://dotnetwithme.blogspot.com/feeds/3949721829426923222/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://dotnetwithme.blogspot.com/2007/10/patterns-composite-structural-pattern.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6109902428394591235/posts/default/3949721829426923222'/><link rel='self' type='application/atom+xml' href='https://dotnetwithme.blogspot.com/feeds/posts/default/3949721829426923222'/><link rel='alternate' type='text/html' href='https://dotnetwithme.blogspot.com/2007/10/patterns-composite-structural-pattern.html' title='* Patterns : Composite Structural Pattern'/><author><name>Vikas Goyal</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='35' height='35' src='//www.blogger.com/img/blogger_logo_round_35.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.google.com/vikasgoyal77/RwsF30CC3eI/AAAAAAAAAK8/kwEUr6hnb4E/s72-c/Composite%5B13%5D.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6109902428394591235.post-5856214178314085455</id><published>2007-10-05T10:54:00.001+05:30</published><updated>2007-10-05T10:57:18.456+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Tutorials'/><category scheme='http://www.blogger.com/atom/ns#' term='Architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='CSharp'/><category scheme='http://www.blogger.com/atom/ns#' term='Design Patterns'/><title type='text'>* Patterns : Bridge Structural Pattern</title><summary type='text'>Bridge Structural Pattern decouples an abstraction from its implementation so that the two can vary independently. Multiple variants of abstraction can be created provided they implement the common interface. Similarly, multiple variants of implementations can be created provided they implement the common interface. Given the option of multiple abstraction variants and multiple implementation </summary><link rel='replies' type='application/atom+xml' href='https://dotnetwithme.blogspot.com/feeds/5856214178314085455/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://dotnetwithme.blogspot.com/2007/10/patterns-bridge-structural-pattern.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6109902428394591235/posts/default/5856214178314085455'/><link rel='self' type='application/atom+xml' href='https://dotnetwithme.blogspot.com/feeds/posts/default/5856214178314085455'/><link rel='alternate' type='text/html' href='https://dotnetwithme.blogspot.com/2007/10/patterns-bridge-structural-pattern.html' title='* Patterns : Bridge Structural Pattern'/><author><name>Vikas Goyal</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='35' height='35' src='//www.blogger.com/img/blogger_logo_round_35.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.google.com/vikasgoyal77/RwXKqvN-dOI/AAAAAAAAAK0/ttAzE8XEFEY/s72-c/Bridge_thumb%5B33%5D.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6109902428394591235.post-4528966945666528121</id><published>2007-10-03T13:40:00.001+05:30</published><updated>2007-10-03T15:25:19.138+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Tutorials'/><category scheme='http://www.blogger.com/atom/ns#' term='Architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='CSharp'/><category scheme='http://www.blogger.com/atom/ns#' term='Design Patterns'/><title type='text'>* Patterns : Adapter Structural Pattern</title><summary type='text'>Adapter pattern also called as Wrapper pattern lets client adapt a framework/service with different call definitions than what client has been designed for. Clients continue using the original definitions and adapter takes care of transformation.  Consider the class diagram below :       Client calls the ClientBase class which is client's default framework. Now Client is supposed to use </summary><link rel='replies' type='application/atom+xml' href='https://dotnetwithme.blogspot.com/feeds/4528966945666528121/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://dotnetwithme.blogspot.com/2007/10/patterns-adapter-structural-pattern.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6109902428394591235/posts/default/4528966945666528121'/><link rel='self' type='application/atom+xml' href='https://dotnetwithme.blogspot.com/feeds/posts/default/4528966945666528121'/><link rel='alternate' type='text/html' href='https://dotnetwithme.blogspot.com/2007/10/patterns-adapter-structural-pattern.html' title='* Patterns : Adapter Structural Pattern'/><author><name>Vikas Goyal</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='35' height='35' src='//www.blogger.com/img/blogger_logo_round_35.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.google.com/vikasgoyal77/RwNOW_N-dMI/AAAAAAAAAKM/kyv-SjX_H48/s72-c/Adapter_thumb%5B18%5D.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6109902428394591235.post-6301318661076485603</id><published>2007-09-28T10:10:00.001+05:30</published><updated>2007-09-28T10:10:27.499+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Tutorials'/><category scheme='http://www.blogger.com/atom/ns#' term='Architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='CSharp'/><category scheme='http://www.blogger.com/atom/ns#' term='Design Patterns'/><title type='text'>* Singleton Creational Pattern</title><summary type='text'>One of the most popular creational pattern. It is used to restrict the number of instances of a type to one and so all clients use the same instance. Consider the following class diagram :   Client creates two variables of type Singleton, s1 and s2.&amp;nbsp;  The client code looks like following :    public class Client    {        Singleton s1,s2;        public void Run()        {            // s1 </summary><link rel='replies' type='application/atom+xml' href='https://dotnetwithme.blogspot.com/feeds/6301318661076485603/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://dotnetwithme.blogspot.com/2007/09/singleton-creational-pattern.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6109902428394591235/posts/default/6301318661076485603'/><link rel='self' type='application/atom+xml' href='https://dotnetwithme.blogspot.com/feeds/posts/default/6301318661076485603'/><link rel='alternate' type='text/html' href='https://dotnetwithme.blogspot.com/2007/09/singleton-creational-pattern.html' title='* Singleton Creational Pattern'/><author><name>Vikas Goyal</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='35' height='35' src='//www.blogger.com/img/blogger_logo_round_35.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6109902428394591235.post-8508467485904391848</id><published>2007-09-24T12:49:00.001+05:30</published><updated>2007-09-24T15:51:37.881+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Tutorials'/><category scheme='http://www.blogger.com/atom/ns#' term='Architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='CSharp'/><category scheme='http://www.blogger.com/atom/ns#' term='Design Patterns'/><title type='text'>* Patterns : Prototype Creational Pattern</title><summary type='text'>Prototype Creational Pattern provides an interface which can be used by client to get access to already existing instance of a type which can be used as prototype by client to create new instance. Client can clone the existing object using deep or shallow copy and use it. It is used mainly when inherent cost of creating a new object is high. Consider the following class diagram :   Above scenario</summary><link rel='replies' type='application/atom+xml' href='https://dotnetwithme.blogspot.com/feeds/8508467485904391848/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://dotnetwithme.blogspot.com/2007/09/patterns-prototype-creational-pattern.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6109902428394591235/posts/default/8508467485904391848'/><link rel='self' type='application/atom+xml' href='https://dotnetwithme.blogspot.com/feeds/posts/default/8508467485904391848'/><link rel='alternate' type='text/html' href='https://dotnetwithme.blogspot.com/2007/09/patterns-prototype-creational-pattern.html' title='* Patterns : Prototype Creational Pattern'/><author><name>Vikas Goyal</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='35' height='35' src='//www.blogger.com/img/blogger_logo_round_35.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6109902428394591235.post-2169309385168218079</id><published>2007-09-24T10:16:00.001+05:30</published><updated>2007-09-24T10:16:32.891+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Tutorials'/><category scheme='http://www.blogger.com/atom/ns#' term='Architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='CSharp'/><category scheme='http://www.blogger.com/atom/ns#' term='Design Patterns'/><title type='text'>* Patterns : Factory Method Creational Pattern</title><summary type='text'>It provides an interface for creating an object but lets subclass decide which class to instantiates. So, it can also be called as virtual constructor. Consider the following class diagram :   ShapeCreator class provides an factory method to create objects of BaseShape. Client always uses ShapeCreator and BaseShape type variables to work on instances of derives classes. The client looks like </summary><link rel='replies' type='application/atom+xml' href='https://dotnetwithme.blogspot.com/feeds/2169309385168218079/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://dotnetwithme.blogspot.com/2007/09/patterns-factory-method-creational.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6109902428394591235/posts/default/2169309385168218079'/><link rel='self' type='application/atom+xml' href='https://dotnetwithme.blogspot.com/feeds/posts/default/2169309385168218079'/><link rel='alternate' type='text/html' href='https://dotnetwithme.blogspot.com/2007/09/patterns-factory-method-creational.html' title='* Patterns : Factory Method Creational Pattern'/><author><name>Vikas Goyal</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='35' height='35' src='//www.blogger.com/img/blogger_logo_round_35.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6109902428394591235.post-6534401834233887158</id><published>2007-09-21T15:30:00.001+05:30</published><updated>2007-09-21T15:30:09.758+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tutorials'/><category scheme='http://www.blogger.com/atom/ns#' term='Architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='CSharp'/><category scheme='http://www.blogger.com/atom/ns#' term='Design Patterns'/><title type='text'>* Patterns : Builder Creational Pattern</title><summary type='text'>Builder Creational Pattern separates the process of construction of a complex object from its actual representation. This means that the same process can create different representations of same object. Consider the following diagram :   The main class here is ShapeCreator which is called Director and controls the process of construction of object.&amp;nbsp;    // Director    public class </summary><link rel='replies' type='application/atom+xml' href='https://dotnetwithme.blogspot.com/feeds/6534401834233887158/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://dotnetwithme.blogspot.com/2007/09/patterns-builder-creational-pattern.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6109902428394591235/posts/default/6534401834233887158'/><link rel='self' type='application/atom+xml' href='https://dotnetwithme.blogspot.com/feeds/posts/default/6534401834233887158'/><link rel='alternate' type='text/html' href='https://dotnetwithme.blogspot.com/2007/09/patterns-builder-creational-pattern.html' title='* Patterns : Builder Creational Pattern'/><author><name>Vikas Goyal</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='35' height='35' src='//www.blogger.com/img/blogger_logo_round_35.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6109902428394591235.post-2602184087784510659</id><published>2007-09-20T11:36:00.001+05:30</published><updated>2007-09-20T11:36:39.862+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='CSharp'/><category scheme='http://www.blogger.com/atom/ns#' term='Design Patterns'/><title type='text'>* Pattern : Abstract Factory Creational Pattern</title><summary type='text'>Provides a single interface for creating families of related or dependent objects without using the concrete type name. Consider the following class diagram :  In above diagram, CreateShapes acts as an single interface for creating various families of products. The diagram shows only Red shapes but it can be extended to create more color shapes.  The client code will look like this :    public </summary><link rel='replies' type='application/atom+xml' href='https://dotnetwithme.blogspot.com/feeds/2602184087784510659/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://dotnetwithme.blogspot.com/2007/09/pattern-abstract-factory-creational.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6109902428394591235/posts/default/2602184087784510659'/><link rel='self' type='application/atom+xml' href='https://dotnetwithme.blogspot.com/feeds/posts/default/2602184087784510659'/><link rel='alternate' type='text/html' href='https://dotnetwithme.blogspot.com/2007/09/pattern-abstract-factory-creational.html' title='* Pattern : Abstract Factory Creational Pattern'/><author><name>Vikas Goyal</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='35' height='35' src='//www.blogger.com/img/blogger_logo_round_35.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6109902428394591235.post-4101105990467217917</id><published>2007-09-19T14:32:00.001+05:30</published><updated>2007-09-19T14:39:56.494+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Development'/><category scheme='http://www.blogger.com/atom/ns#' term='Productivity'/><category scheme='http://www.blogger.com/atom/ns#' term='Design Patterns'/><title type='text'>* Design Patterns : Gang of Four</title><summary type='text'>Over next few days, I will be discussing the implementation of GOF design patterns in CSharp.  I wont be discussing the benefits of Design Patterns here ... you can read about them here : Design Patterns. In one line : "They bring best practice for solving common design problems to software development which helps in ensuring success of design and increase in productivity." Here is a quick </summary><link rel='replies' type='application/atom+xml' href='https://dotnetwithme.blogspot.com/feeds/4101105990467217917/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://dotnetwithme.blogspot.com/2007/09/design-patterns-gang-of-four.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6109902428394591235/posts/default/4101105990467217917'/><link rel='self' type='application/atom+xml' href='https://dotnetwithme.blogspot.com/feeds/posts/default/4101105990467217917'/><link rel='alternate' type='text/html' href='https://dotnetwithme.blogspot.com/2007/09/design-patterns-gang-of-four.html' title='* Design Patterns : Gang of Four'/><author><name>Vikas Goyal</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='35' height='35' src='//www.blogger.com/img/blogger_logo_round_35.png'/></author><thr:total>0</thr:total></entry></feed>