<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;DkIHQ3o4fip7ImA9WhVRE0Q.&quot;"><id>tag:blogger.com,1999:blog-628409642257510754</id><updated>2012-03-21T22:35:32.436-07:00</updated><category term="Design Pattern" /><title>Imtiaz Ahmed .NET Developer Blog</title><subtitle type="html" /><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://smartdotnetguru.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://smartdotnetguru.blogspot.com/" /><author><name>Imtiaz</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://3.bp.blogspot.com/-qzQpOG3uBgc/Tb9g5svjgKI/AAAAAAAAAIM/LrrhwPccfII/s220/Imtiaz%2527Photo.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>7</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/ImtiazAhmednetDeveloperBlog" /><feedburner:info uri="imtiazahmednetdeveloperblog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;DEMDQXY-cCp7ImA9WhZUFEk.&quot;"><id>tag:blogger.com,1999:blog-628409642257510754.post-5787298608611789337</id><published>2011-06-07T04:34:00.000-07:00</published><updated>2011-06-07T04:34:30.858-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-07T04:34:30.858-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Design Pattern" /><title>Factory Method Design Pattern</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;br /&gt;
The Factory Method pattern is way of creating objects, but letting subclasses decided exactly which class to instantiate. All factory method encapsulates creation of object. Creator class creates the object of the product based on values supplied by the client. &lt;br /&gt;
In this example participant are: &lt;br /&gt;
Product Interface and product classes. &lt;br /&gt;
&lt;blockquote&gt;&lt;span style="color: #2b91af;"&gt;IColorProduct&lt;br /&gt;
RedColore&lt;br /&gt;
GreenColor&lt;br /&gt;
BlueColor&lt;/span&gt;&lt;/blockquote&gt;&lt;b&gt;&lt;u&gt;&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;u&gt;Creator Class&lt;/u&gt;&lt;/b&gt; &lt;br /&gt;
&lt;blockquote&gt;&lt;span style="color: #2b91af;"&gt;ColorCreator&lt;/span&gt;&lt;/blockquote&gt;&lt;b&gt;&lt;u&gt;UML Diagram&lt;/u&gt;&lt;/b&gt;&amp;nbsp; &lt;br /&gt;
&lt;a href="http://lh5.ggpht.com/-5vL7T8xJsSQ/TeaW92tPwVI/AAAAAAAAALM/Weqih284JdA/s1600-h/FactoryDesignPattern%25255B6%25255D.png"&gt;&lt;img alt="FactoryDesignPattern" border="0" height="278px" src="http://lh4.ggpht.com/-MKCvks37hvw/TeaW-ypy3mI/AAAAAAAAALQ/9bwKSmwit1Q/FactoryDesignPattern_thumb%25255B4%25255D.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="FactoryDesignPattern" width="538px" /&gt;&lt;/a&gt; &lt;br /&gt;
&lt;b&gt;&lt;u&gt;&lt;/u&gt;&lt;/b&gt;&amp;nbsp; &lt;br /&gt;
&lt;b&gt;&lt;u&gt;Code Explanation&lt;/u&gt;&lt;/b&gt; &lt;br /&gt;
I created IColorProduct Interface. This interface implemented by 3 classes RedColor, GreenColor and BlueColor. Based on passed values by client, Creator class (ColorCreator) creates different classes. &lt;br /&gt;
&lt;b&gt;&lt;u&gt;Code Sample&lt;/u&gt;&lt;/b&gt; &lt;br /&gt;
&lt;div id="codeSnippetWrapper" style="background-color: #f4f4f4; border-bottom: silver 1px solid; border-left: silver 1px solid; border-right: silver 1px solid; border-top: silver 1px solid; cursor: text; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 20px 0px 10px; max-height: 200px; overflow: auto; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; text-align: left; width: 97.5%;"&gt;&lt;div id="codeSnippet" style="background-color: #f4f4f4; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;pre style="background-color: white; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt;   1:&lt;/span&gt; &lt;span style="color: blue;"&gt;interface&lt;/span&gt; IColorProduct&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt;   2:&lt;/span&gt;     {&lt;/pre&gt;&lt;pre style="background-color: white; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt;   3:&lt;/span&gt;         Color GetColor();&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum4" style="color: #606060;"&gt;   4:&lt;/span&gt;     }&lt;/pre&gt;&lt;pre style="background-color: white; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum5" style="color: #606060;"&gt;   5:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum6" style="color: #606060;"&gt;   6:&lt;/span&gt;     &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; RedColor : IColorProduct&lt;/pre&gt;&lt;pre style="background-color: white; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum7" style="color: #606060;"&gt;   7:&lt;/span&gt;     {&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum8" style="color: #606060;"&gt;   8:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="background-color: white; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum9" style="color: #606060;"&gt;   9:&lt;/span&gt;         &lt;span style="color: blue;"&gt;public&lt;/span&gt; Color GetColor()&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum10" style="color: #606060;"&gt;  10:&lt;/span&gt;         {&lt;/pre&gt;&lt;pre style="background-color: white; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum11" style="color: #606060;"&gt;  11:&lt;/span&gt;             &lt;span style="color: blue;"&gt;return&lt;/span&gt; Color.Red;&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum12" style="color: #606060;"&gt;  12:&lt;/span&gt;         }&lt;/pre&gt;&lt;pre style="background-color: white; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum13" style="color: #606060;"&gt;  13:&lt;/span&gt;     }&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum14" style="color: #606060;"&gt;  14:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="background-color: white; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum15" style="color: #606060;"&gt;  15:&lt;/span&gt;     &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; GreenColor : IColorProduct&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum16" style="color: #606060;"&gt;  16:&lt;/span&gt;     {&lt;/pre&gt;&lt;pre style="background-color: white; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum17" style="color: #606060;"&gt;  17:&lt;/span&gt;         &lt;span style="color: blue;"&gt;public&lt;/span&gt; Color GetColor()&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum18" style="color: #606060;"&gt;  18:&lt;/span&gt;         {&lt;/pre&gt;&lt;pre style="background-color: white; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum19" style="color: #606060;"&gt;  19:&lt;/span&gt;             &lt;span style="color: blue;"&gt;return&lt;/span&gt; Color.Green;&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum20" style="color: #606060;"&gt;  20:&lt;/span&gt;         }&lt;/pre&gt;&lt;pre style="background-color: white; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum21" style="color: #606060;"&gt;  21:&lt;/span&gt;     }&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum22" style="color: #606060;"&gt;  22:&lt;/span&gt;     &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; BlueColor : IColorProduct&lt;/pre&gt;&lt;pre style="background-color: white; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum23" style="color: #606060;"&gt;  23:&lt;/span&gt;     {&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum24" style="color: #606060;"&gt;  24:&lt;/span&gt;         &lt;span style="color: blue;"&gt;public&lt;/span&gt; Color GetColor()&lt;/pre&gt;&lt;pre style="background-color: white; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum25" style="color: #606060;"&gt;  25:&lt;/span&gt;         {&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum26" style="color: #606060;"&gt;  26:&lt;/span&gt;             &lt;span style="color: blue;"&gt;return&lt;/span&gt; Color.Blue;&lt;/pre&gt;&lt;pre style="background-color: white; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum27" style="color: #606060;"&gt;  27:&lt;/span&gt;         }&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum28" style="color: #606060;"&gt;  28:&lt;/span&gt;     }&lt;/pre&gt;&lt;pre style="background-color: white; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum29" style="color: #606060;"&gt;  29:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum30" style="color: #606060;"&gt;  30:&lt;/span&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; ColorCreator&lt;/pre&gt;&lt;pre style="background-color: white; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum31" style="color: #606060;"&gt;  31:&lt;/span&gt;    {&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum32" style="color: #606060;"&gt;  32:&lt;/span&gt;        IColorProduct colorProduct;&lt;/pre&gt;&lt;pre style="background-color: white; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum33" style="color: #606060;"&gt;  33:&lt;/span&gt;        &lt;span style="color: blue;"&gt;public&lt;/span&gt; Color  GetColorFactory(&lt;span style="color: blue;"&gt;string&lt;/span&gt;  ColorCode)&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum34" style="color: #606060;"&gt;  34:&lt;/span&gt;        {&lt;/pre&gt;&lt;pre style="background-color: white; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum35" style="color: #606060;"&gt;  35:&lt;/span&gt;            &lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum36" style="color: #606060;"&gt;  36:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="background-color: white; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum37" style="color: #606060;"&gt;  37:&lt;/span&gt;            &lt;span style="color: blue;"&gt;switch&lt;/span&gt; (ColorCode)&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum38" style="color: #606060;"&gt;  38:&lt;/span&gt;            {&lt;/pre&gt;&lt;pre style="background-color: white; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum39" style="color: #606060;"&gt;  39:&lt;/span&gt;                &lt;span style="color: blue;"&gt;case&lt;/span&gt; &lt;span style="color: #006080;"&gt;"rdoBlue"&lt;/span&gt;:&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum40" style="color: #606060;"&gt;  40:&lt;/span&gt;                    colorProduct = &lt;span style="color: blue;"&gt;new&lt;/span&gt; BlueColor();&lt;/pre&gt;&lt;pre style="background-color: white; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum41" style="color: #606060;"&gt;  41:&lt;/span&gt;                    &lt;span style="color: blue;"&gt;break&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum42" style="color: #606060;"&gt;  42:&lt;/span&gt;                &lt;span style="color: blue;"&gt;case&lt;/span&gt; &lt;span style="color: #006080;"&gt;"rdoRed"&lt;/span&gt;:&lt;/pre&gt;&lt;pre style="background-color: white; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum43" style="color: #606060;"&gt;  43:&lt;/span&gt;                    colorProduct = &lt;span style="color: blue;"&gt;new&lt;/span&gt; RedColor();&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum44" style="color: #606060;"&gt;  44:&lt;/span&gt;                    &lt;span style="color: blue;"&gt;break&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="background-color: white; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum45" style="color: #606060;"&gt;  45:&lt;/span&gt;                &lt;span style="color: blue;"&gt;case&lt;/span&gt; &lt;span style="color: #006080;"&gt;"rdoGreen"&lt;/span&gt;:&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum46" style="color: #606060;"&gt;  46:&lt;/span&gt;                    colorProduct = &lt;span style="color: blue;"&gt;new&lt;/span&gt; GreenColor();&lt;/pre&gt;&lt;pre style="background-color: white; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum47" style="color: #606060;"&gt;  47:&lt;/span&gt;                    &lt;span style="color: blue;"&gt;break&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum48" style="color: #606060;"&gt;  48:&lt;/span&gt;                &lt;span style="color: blue;"&gt;default&lt;/span&gt;:&lt;/pre&gt;&lt;pre style="background-color: white; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum49" style="color: #606060;"&gt;  49:&lt;/span&gt;                    colorProduct = &lt;span style="color: blue;"&gt;new&lt;/span&gt; GreenColor();&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum50" style="color: #606060;"&gt;  50:&lt;/span&gt;                    &lt;span style="color: blue;"&gt;break&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="background-color: white; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum51" style="color: #606060;"&gt;  51:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum52" style="color: #606060;"&gt;  52:&lt;/span&gt;            }&lt;/pre&gt;&lt;pre style="background-color: white; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum53" style="color: #606060;"&gt;  53:&lt;/span&gt;            &lt;span style="color: blue;"&gt;return&lt;/span&gt; colorProduct.GetColor(); &lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum54" style="color: #606060;"&gt;  54:&lt;/span&gt;        }&lt;/pre&gt;&lt;pre style="background-color: white; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum55" style="color: #606060;"&gt;  55:&lt;/span&gt;    }&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum56" style="color: #606060;"&gt;  56:&lt;/span&gt; &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; rdo_CheckedChanged(&lt;span style="color: blue;"&gt;object&lt;/span&gt; sender, EventArgs e)&lt;/pre&gt;&lt;pre style="background-color: white; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum57" style="color: #606060;"&gt;  57:&lt;/span&gt;         {&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum58" style="color: #606060;"&gt;  58:&lt;/span&gt;             RadioButton radioButton = (RadioButton)sender;&lt;/pre&gt;&lt;pre style="background-color: white; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum59" style="color: #606060;"&gt;  59:&lt;/span&gt;             &lt;span style="color: blue;"&gt;string&lt;/span&gt; strSelected=&lt;span style="color: #006080;"&gt;""&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum60" style="color: #606060;"&gt;  60:&lt;/span&gt;             &lt;span style="color: blue;"&gt;if&lt;/span&gt;(radioButton.Checked==&lt;span style="color: blue;"&gt;true&lt;/span&gt;)&lt;/pre&gt;&lt;pre style="background-color: white; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum61" style="color: #606060;"&gt;  61:&lt;/span&gt;                  strSelected = radioButton.Name;&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum62" style="color: #606060;"&gt;  62:&lt;/span&gt;             ColorCreator creator = &lt;span style="color: blue;"&gt;new&lt;/span&gt; ColorCreator();&lt;/pre&gt;&lt;pre style="background-color: white; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum63" style="color: #606060;"&gt;  63:&lt;/span&gt;             panel1.BackColor = creator.GetColorFactory(strSelected);&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum64" style="color: #606060;"&gt;  64:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="background-color: white; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum65" style="color: #606060;"&gt;  65:&lt;/span&gt;         }&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum66" style="color: #606060;"&gt;  66:&lt;/span&gt; &lt;span style="color: green;"&gt;//For three radio button only one event handler&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: white; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum67" style="color: #606060;"&gt;  67:&lt;/span&gt; &lt;span style="color: blue;"&gt;this&lt;/span&gt;.rdoBlue.CheckedChanged += &lt;span style="color: blue;"&gt;new&lt;/span&gt; System.EventHandler(&lt;span style="color: blue;"&gt;this&lt;/span&gt;.rdo_CheckedChanged);&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum68" style="color: #606060;"&gt;  68:&lt;/span&gt; &lt;span style="color: blue;"&gt;this&lt;/span&gt;.rdoRed.CheckedChanged += &lt;span style="color: blue;"&gt;new&lt;/span&gt; System.EventHandler(&lt;span style="color: blue;"&gt;this&lt;/span&gt;.rdo_CheckedChanged);&lt;/pre&gt;&lt;pre style="background-color: white; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum69" style="color: #606060;"&gt;  69:&lt;/span&gt; &lt;span style="color: blue;"&gt;this&lt;/span&gt;.rdoGreen.CheckedChanged += &lt;span style="color: blue;"&gt;new&lt;/span&gt; System.EventHandler(&lt;span style="color: blue;"&gt;this&lt;/span&gt;.rdo_CheckedChanged);&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
&lt;strong&gt;&lt;u&gt;Achievement&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;By using factory method we centralized creation of the objects in one location.&lt;/li&gt;
&lt;li&gt;Client who ever using factory method responsibility is only passing values. Based on values different color objects are returning. Client no need to know internal logic of creation of object.&lt;/li&gt;
&lt;li&gt;In future if we add new color class there is no impact on client code. &lt;/li&gt;
&lt;li&gt;Hinding object creation logic inside Factory class.&lt;/li&gt;
&lt;/ol&gt;&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ImtiazAhmednetDeveloperBlog/~4/q9Paa2CGuJE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://smartdotnetguru.blogspot.com/feeds/5787298608611789337/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://smartdotnetguru.blogspot.com/2011/06/factory-method-design-pattern.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/628409642257510754/posts/default/5787298608611789337?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/628409642257510754/posts/default/5787298608611789337?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ImtiazAhmednetDeveloperBlog/~3/q9Paa2CGuJE/factory-method-design-pattern.html" title="Factory Method Design Pattern" /><author><name>Imtiaz</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://3.bp.blogspot.com/-qzQpOG3uBgc/Tb9g5svjgKI/AAAAAAAAAIM/LrrhwPccfII/s220/Imtiaz%2527Photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/-MKCvks37hvw/TeaW-ypy3mI/AAAAAAAAALQ/9bwKSmwit1Q/s72-c/FactoryDesignPattern_thumb%25255B4%25255D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://smartdotnetguru.blogspot.com/2011/06/factory-method-design-pattern.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0EHRX47fip7ImA9WhZVEEw.&quot;"><id>tag:blogger.com,1999:blog-628409642257510754.post-517576436811884009</id><published>2011-05-21T13:49:00.001-07:00</published><updated>2011-05-21T14:00:34.006-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-21T14:00:34.006-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Design Pattern" /><title>Design Patterns</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;span xmlns=""&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Verdana; font-size: 10pt;"&gt;I am starting to write articles on design patterns. We have 3 types of design patterns as per GoF. There are plenty of design patterns available but 23 standard pattern I am going to cover in my article. Design patterns are Solutions to commonly occurring design problem. Someone has already faced the problem and come up with good and elegant solution. The same pattern you have to use. Design Pattern divided into 3 categories. &lt;/span&gt;&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;&lt;span style="font-family: Verdana; font-size: 10pt;"&gt;Creational&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: Verdana; font-size: 10pt;"&gt;Behavioral&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;div&gt;&lt;span style="font-family: Verdana; font-size: 10pt;"&gt;Structural&lt;/span&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-size: 13pt;"&gt;&lt;strong&gt;Creational&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-size: 12pt;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: Verdana; font-size: 10pt;"&gt;Concerned about ways to create new objects.&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;div&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-size: 13pt;"&gt;&lt;strong&gt;Behavioral&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-size: 12pt;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: Verdana; font-size: 10pt;"&gt;Concerned about ways in which objects interacted&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;div&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-size: 13pt;"&gt;&lt;strong&gt;Strucural&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-size: 12pt;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: Verdana; font-size: 10pt;"&gt;Concerned about the composition of objects and classes&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;span style="font-family: Verdana; font-size: 12pt;"&gt;&lt;span style="color: blue;"&gt;&lt;strong&gt;Creational Patterns&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;&lt;table border="0" style="border-collapse: collapse;"&gt;&lt;colgroup&gt;&lt;col style="width: 127px;"&gt;&lt;col style="width: 563px;"&gt;&lt;/colgroup&gt;&lt;tbody valign="top"&gt;
&lt;tr style="height: 20px;"&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: 0.5pt solid; border-right: 0.5pt solid; border-top: 0.5pt solid; padding-left: 7px; padding-right: 7px;" valign="middle"&gt;&lt;span style="color: black; font-family: Verdana; font-size: 10pt;"&gt;&lt;strong&gt;Singleton&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: medium none; border-right: 0.5pt solid; border-top: 0.5pt solid; padding-left: 7px; padding-right: 7px;" valign="middle"&gt;&lt;span style="color: black; font-family: Verdana; font-size: 10pt;"&gt;To Create a sole instance of a class&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="height: 20px;"&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: 0.5pt solid; border-right: 0.5pt solid; border-top: medium none; padding-left: 7px; padding-right: 7px;" valign="middle"&gt;&lt;span style="color: black; font-family: Verdana; font-size: 10pt;"&gt;&lt;strong&gt;Prototype&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: medium none; border-right: 0.5pt solid; border-top: medium none; padding-left: 7px; padding-right: 7px;" valign="middle"&gt;&lt;span style="color: black; font-family: Verdana; font-size: 10pt;"&gt;To create object by cloning existing object.&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="height: 20px;"&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: 0.5pt solid; border-right: 0.5pt solid; border-top: medium none; padding-left: 7px; padding-right: 7px;" valign="middle"&gt;&lt;span style="color: black; font-family: Verdana; font-size: 10pt;"&gt;&lt;strong&gt;Builder&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: medium none; border-right: 0.5pt solid; border-top: medium none; padding-left: 7px; padding-right: 7px;" valign="middle"&gt;&lt;span style="color: black; font-family: Verdana; font-size: 10pt;"&gt;Build an object from existing representation&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="height: 20px;"&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: 0.5pt solid; border-right: 0.5pt solid; border-top: medium none; padding-left: 7px; padding-right: 7px;" valign="middle"&gt;&lt;span style="color: black; font-family: Verdana; font-size: 10pt;"&gt;&lt;strong&gt;Factory Method&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: medium none; border-right: 0.5pt solid; border-top: medium none; padding-left: 7px; padding-right: 7px;" valign="middle"&gt;&lt;span style="color: black; font-family: Verdana; font-size: 10pt;"&gt;Defer instantiation to subclass&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="height: 34px;"&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: 0.5pt solid; border-right: 0.5pt solid; border-top: medium none; padding-left: 7px; padding-right: 7px;" valign="middle"&gt;&lt;span style="color: black; font-family: Verdana; font-size: 10pt;"&gt;&lt;strong&gt;Abstract Factory&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: medium none; border-right: 0.5pt solid; border-top: medium none; padding-left: 7px; padding-right: 7px;" valign="middle"&gt;&lt;span style="color: black; font-family: Verdana; font-size: 10pt;"&gt;Provides interface to create families of objects without specifying the concrete classes of the objects&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style="font-size: 12pt;"&gt;&lt;strong&gt;&lt;span style="color: blue; font-family: Verdana;"&gt;Structural Patterns &lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;&lt;table border="0" style="border-collapse: collapse;"&gt;&lt;colgroup&gt;&lt;col style="width: 127px;"&gt;&lt;col style="width: 563px;"&gt;&lt;/colgroup&gt;&lt;tbody valign="top"&gt;
&lt;tr style="height: 20px;"&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: 0.5pt solid; border-right: 0.5pt solid; border-top: 0.5pt solid; padding-left: 7px; padding-right: 7px;" valign="middle"&gt;&lt;span style="color: black; font-family: Verdana; font-size: 10pt;"&gt;&lt;strong&gt;Adapter&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: medium none; border-right: 0.5pt solid; border-top: 0.5pt solid; padding-left: 7px; padding-right: 7px;" valign="middle"&gt;&lt;span style="color: black; font-family: Verdana; font-size: 10pt;"&gt;Convert an instance to another&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="height: 20px;"&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: 0.5pt solid; border-right: 0.5pt solid; border-top: medium none; padding-left: 7px; padding-right: 7px;" valign="middle"&gt;&lt;span style="color: black; font-family: Verdana; font-size: 10pt;"&gt;&lt;strong&gt;Composite&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: medium none; border-right: 0.5pt solid; border-top: medium none; padding-left: 7px; padding-right: 7px;" valign="middle"&gt;&lt;span style="color: black; font-family: Verdana; font-size: 10pt;"&gt;Composite objects in a tree structure&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="height: 20px;"&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: 0.5pt solid; border-right: 0.5pt solid; border-top: medium none; padding-left: 7px; padding-right: 7px;" valign="middle"&gt;&lt;span style="color: black; font-family: Verdana; font-size: 10pt;"&gt;&lt;strong&gt;Decorator&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: medium none; border-right: 0.5pt solid; border-top: medium none; padding-left: 7px; padding-right: 7px;" valign="middle"&gt;&lt;span style="color: black; font-family: Verdana; font-size: 10pt;"&gt;Attach additional responsibilities dynamically&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="height: 20px;"&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: 0.5pt solid; border-right: 0.5pt solid; border-top: medium none; padding-left: 7px; padding-right: 7px;" valign="middle"&gt;&lt;span style="color: black; font-family: Verdana; font-size: 10pt;"&gt;&lt;strong&gt;Proxy&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: medium none; border-right: 0.5pt solid; border-top: medium none; padding-left: 7px; padding-right: 7px;" valign="middle"&gt;&lt;span style="color: black; font-family: Verdana; font-size: 10pt;"&gt;Provide a surrogate or placeholder for another object&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="height: 20px;"&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: 0.5pt solid; border-right: 0.5pt solid; border-top: medium none; padding-left: 7px; padding-right: 7px;" valign="middle"&gt;&lt;span style="color: black; font-family: Verdana; font-size: 10pt;"&gt;&lt;strong&gt;Façade&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: medium none; border-right: 0.5pt solid; border-top: medium none; padding-left: 7px; padding-right: 7px;" valign="middle"&gt;&lt;span style="color: black; font-family: Verdana; font-size: 10pt;"&gt;Provide a unified instance to a set of instances in sub system&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="height: 20px;"&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: 0.5pt solid; border-right: 0.5pt solid; border-top: medium none; padding-left: 7px; padding-right: 7px;" valign="middle"&gt;&lt;span style="color: black; font-family: Verdana; font-size: 10pt;"&gt;&lt;strong&gt;Bridge&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: medium none; border-right: 0.5pt solid; border-top: medium none; padding-left: 7px; padding-right: 7px;" valign="middle"&gt;&lt;span style="color: black; font-family: Verdana; font-size: 10pt;"&gt;Decouple abstraction from implementation. Let them vary and independent.&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="height: 20px;"&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: 0.5pt solid; border-right: 0.5pt solid; border-top: medium none; padding-left: 7px; padding-right: 7px;" valign="middle"&gt;&lt;span style="color: black; font-family: Verdana; font-size: 10pt;"&gt;&lt;strong&gt;Flyweight&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: medium none; border-right: 0.5pt solid; border-top: medium none; padding-left: 7px; padding-right: 7px;" valign="middle"&gt;&lt;span style="color: black; font-family: Verdana; font-size: 10pt;"&gt;A fine-grained instance user for efficient sharing&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style="font-size: 12pt;"&gt;&lt;strong&gt;&lt;span style="color: blue; font-family: Verdana;"&gt;Behavioral Pattern&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;&lt;table border="0" style="border-collapse: collapse;"&gt;&lt;colgroup&gt;&lt;col style="width: 127px;"&gt;&lt;col style="width: 563px;"&gt;&lt;/colgroup&gt;&lt;tbody valign="top"&gt;
&lt;tr style="height: 20px;"&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: 0.5pt solid; border-right: 0.5pt solid; border-top: 0.5pt solid; padding-left: 7px; padding-right: 7px;" valign="middle"&gt;&lt;span style="color: black; font-family: Verdana; font-size: 10pt;"&gt;&lt;strong&gt;Chain of Resp.&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: medium none; border-right: 0.5pt solid; border-top: 0.5pt solid; padding-left: 7px; padding-right: 7px;" valign="middle"&gt;&lt;span style="color: black; font-family: Verdana; font-size: 10pt;"&gt;Delegates commands to a chain of processing objects.&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="height: 20px;"&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: 0.5pt solid; border-right: 0.5pt solid; border-top: medium none; padding-left: 7px; padding-right: 7px;" valign="middle"&gt;&lt;span style="color: black; font-family: Verdana; font-size: 10pt;"&gt;&lt;strong&gt;Command&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: medium none; border-right: 0.5pt solid; border-top: medium none; padding-left: 7px; padding-right: 7px;" valign="middle"&gt;&lt;span style="color: black; font-family: Verdana; font-size: 10pt;"&gt;Creates objects which encapsulate actions and parameters.&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="height: 20px;"&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: 0.5pt solid; border-right: 0.5pt solid; border-top: medium none; padding-left: 7px; padding-right: 7px;" valign="middle"&gt;&lt;span style="color: black; font-family: Verdana; font-size: 10pt;"&gt;&lt;strong&gt;Interpreter&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: medium none; border-right: 0.5pt solid; border-top: medium none; padding-left: 7px; padding-right: 7px;" valign="middle"&gt;&lt;span style="color: black; font-family: Verdana; font-size: 10pt;"&gt;Implements a specialized language.&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="height: 34px;"&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: 0.5pt solid; border-right: 0.5pt solid; border-top: medium none; padding-left: 7px; padding-right: 7px;" valign="middle"&gt;&lt;span style="color: black; font-family: Verdana; font-size: 10pt;"&gt;&lt;strong&gt;Iterator&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: medium none; border-right: 0.5pt solid; border-top: medium none; padding-left: 7px; padding-right: 7px;" valign="middle"&gt;&lt;span style="color: black; font-family: Verdana; font-size: 10pt;"&gt;Accesses the elements of an object sequentially without exposing its underlying representation.&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="height: 34px;"&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: 0.5pt solid; border-right: 0.5pt solid; border-top: medium none; padding-left: 7px; padding-right: 7px;" valign="middle"&gt;&lt;span style="color: black; font-family: Verdana; font-size: 10pt;"&gt;&lt;strong&gt;Mediator&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: medium none; border-right: 0.5pt solid; border-top: medium none; padding-left: 7px; padding-right: 7px;" valign="middle"&gt;&lt;span style="color: black; font-family: Verdana; font-size: 10pt;"&gt;Allows loose coupling between classes by being the only class that has detailed knowledge of their methods.&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="height: 20px;"&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: 0.5pt solid; border-right: 0.5pt solid; border-top: medium none; padding-left: 7px; padding-right: 7px;" valign="middle"&gt;&lt;span style="color: black; font-family: Verdana; font-size: 10pt;"&gt;&lt;strong&gt;Memento&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: medium none; border-right: 0.5pt solid; border-top: medium none; padding-left: 7px; padding-right: 7px;" valign="middle"&gt;&lt;span style="color: black; font-family: Verdana; font-size: 10pt;"&gt;Provides the ability to restore an object to its previous state (undo).&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="height: 34px;"&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: 0.5pt solid; border-right: 0.5pt solid; border-top: medium none; padding-left: 7px; padding-right: 7px;" valign="middle"&gt;&lt;span style="color: black; font-family: Verdana; font-size: 10pt;"&gt;&lt;strong&gt;Observer&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: medium none; border-right: 0.5pt solid; border-top: medium none; padding-left: 7px; padding-right: 7px;" valign="middle"&gt;&lt;span style="color: black; font-family: Verdana; font-size: 10pt;"&gt;Publish/subscribe pattern which allows a number of observer objects to see an event.&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="height: 20px;"&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: 0.5pt solid; border-right: 0.5pt solid; border-top: medium none; padding-left: 7px; padding-right: 7px;" valign="middle"&gt;&lt;span style="color: black; font-family: Verdana; font-size: 10pt;"&gt;&lt;strong&gt;State&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: medium none; border-right: 0.5pt solid; border-top: medium none; padding-left: 7px; padding-right: 7px;" valign="middle"&gt;&lt;span style="color: black; font-family: Verdana; font-size: 10pt;"&gt;Allows an object to alter its behavior when it's internal state changes.&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="height: 20px;"&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: 0.5pt solid; border-right: 0.5pt solid; border-top: medium none; padding-left: 7px; padding-right: 7px;" valign="middle"&gt;&lt;span style="color: black; font-family: Verdana; font-size: 10pt;"&gt;&lt;strong&gt;Strategy&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: medium none; border-right: 0.5pt solid; border-top: medium none; padding-left: 7px; padding-right: 7px;" valign="middle"&gt;&lt;span style="color: black; font-family: Verdana; font-size: 10pt;"&gt;Allows one of a family of algorithms to be selected on-the-fly at runtime.&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="height: 34px;"&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: 0.5pt solid; border-right: 0.5pt solid; border-top: medium none; padding-left: 7px; padding-right: 7px;" valign="middle"&gt;&lt;span style="color: black; font-family: Verdana; font-size: 10pt;"&gt;&lt;strong&gt;Template Method&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: medium none; border-right: 0.5pt solid; border-top: medium none; padding-left: 7px; padding-right: 7px;" valign="middle"&gt;&lt;span style="color: black; font-family: Verdana; font-size: 10pt;"&gt;Defines the skeleton of an algorithm as an abstract class, allowing its subclasses to provide concrete behavior.&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="height: 34px;"&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: 0.5pt solid; border-right: 0.5pt solid; border-top: medium none; padding-left: 7px; padding-right: 7px;" valign="middle"&gt;&lt;span style="color: black; font-family: Verdana; font-size: 10pt;"&gt;&lt;strong&gt;Visitor&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: medium none; border-right: 0.5pt solid; border-top: medium none; padding-left: 7px; padding-right: 7px;" valign="middle"&gt;&lt;span style="color: black; font-family: Verdana; font-size: 10pt;"&gt;Separates an algorithm from an object structure by moving the hierarchy of methods into one object.&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;
&lt;u&gt;Reference Books&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span&gt;&lt;a href="http://www.amazon.com/3-0-Design-Patterns-Judith-Bishop/dp/059652773X?ie=UTF8&amp;amp;tag=imtinetd-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969" target="_blank"&gt;C# 3.0 Design Patterns&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span&gt;&lt;span&gt;&lt;a href="http://www.amazon.com/Design-Patterns-Steven-John-Metsker/dp/0321126971?ie=UTF8&amp;amp;tag=imtinetd-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969" target="_blank"&gt;Design Patterns in C#&lt;/a&gt;&lt;img alt="" border="0" height="1" src="http://www.assoc-amazon.com/e/ir?t=imtinetd-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0321126971" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; margin: 0px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important;" width="1" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;img alt="" border="0" height="1" src="http://www.assoc-amazon.com/e/ir?t=imtinetd-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=059652773X" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; margin: 0px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important;" width="1" /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span&gt;&lt;a href="http://www.amazon.com/C-3-0-Design-Patterns-ebook/dp/B0043EWUAC?ie=UTF8&amp;amp;tag=imtinetd-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969" target="_blank"&gt;C# 3.0 Design Patterns&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span&gt;&lt;span&gt;&lt;a href="http://www.amazon.com/Agile-Principles-Patterns-Practices-C/dp/0131857258?ie=UTF8&amp;amp;tag=imtinetd-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969" target="_blank"&gt;Agile Principles, Patterns, and Practices in C#&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;a href="http://www.amazon.com/NET-Parallel-Programming-Experts-Voice/dp/1430229675?ie=UTF8&amp;amp;tag=imtinetd-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969" target="_blank"&gt;Pro .NET 4 Parallel Programming in C# (Expert's Voice in .NET)&lt;/a&gt;&lt;img alt="" border="0" height="1" src="http://www.assoc-amazon.com/e/ir?t=imtinetd-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=1430229675" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; margin: 0px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important;" width="1" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;a href="http://www.amazon.com/Design-Patterns-Tutorial-James-Cooper/dp/0201844532?ie=UTF8&amp;amp;tag=imtinetd-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969" target="_blank"&gt;C# Design Patterns: A Tutorial&lt;/a&gt;&lt;img alt="" border="0" height="1" src="http://www.assoc-amazon.com/e/ir?t=imtinetd-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0201844532" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; margin: 0px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important;" width="1" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ImtiazAhmednetDeveloperBlog/~4/IMAE6tqqpJI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://smartdotnetguru.blogspot.com/feeds/517576436811884009/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://smartdotnetguru.blogspot.com/2011/05/design-patterns_21.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/628409642257510754/posts/default/517576436811884009?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/628409642257510754/posts/default/517576436811884009?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ImtiazAhmednetDeveloperBlog/~3/IMAE6tqqpJI/design-patterns_21.html" title="Design Patterns" /><author><name>Imtiaz</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://3.bp.blogspot.com/-qzQpOG3uBgc/Tb9g5svjgKI/AAAAAAAAAIM/LrrhwPccfII/s220/Imtiaz%2527Photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://smartdotnetguru.blogspot.com/2011/05/design-patterns_21.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D08CQH06cCp7ImA9WhZWE0w.&quot;"><id>tag:blogger.com,1999:blog-628409642257510754.post-7363100726360456989</id><published>2011-05-13T12:43:00.000-07:00</published><updated>2011-05-13T12:44:21.318-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-13T12:44:21.318-07:00</app:edited><title>Delegates and Events</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;b&gt;&lt;u&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;, &amp;quot;serif&amp;quot;; font-size: 16pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;Delegates&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;u&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;, &amp;quot;serif&amp;quot;; font-size: 16pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;;"&gt; &lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;, &amp;quot;serif&amp;quot;; font-size: 16pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;, &amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-bidi-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;Delegate is pointer to function. In other way we can say that delegate holds the reference of the function. Instead of calling the function we calling the delegate. Signature of the delegate and signature function should be same. In below example we declare delegate which is not taking any parameter and not returning any value. After understanding delegate I am listing benefits of delegate. &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 10pt;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 10pt;"&gt;&lt;u&gt;&lt;span style="font-family: Calibri;"&gt;Code Example&lt;/span&gt;&lt;/u&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 10pt;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="color: blue; font-family: Consolas; font-size: 9.5pt;"&gt;namespace&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt; BasicDelegate&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: green;"&gt;// Declaration&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;delegate&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;MyDelegate&lt;/span&gt;();&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;DelegateExample&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; MyFunction()&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515;"&gt;"I was called by delegate ..."&lt;/span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; Main(&lt;span style="color: blue;"&gt;string&lt;/span&gt;[] args)&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #2b91af;"&gt;MyDelegate&lt;/span&gt; myDelegate = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;MyDelegate&lt;/span&gt;(MyFunction);&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;myDelegate();&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #2b91af;"&gt;Console&lt;/span&gt;.ReadLine();&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;b&gt;&lt;u&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;, &amp;quot;serif&amp;quot;; font-size: 16pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;Events&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;, &amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-bidi-font-family: Consolas;"&gt;The basic of the event is publisher and subscriber.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;Publishers object publish event and any number of object can be subscribe to publisher object. To declare event first we have to declare a delegate. By using delegate event should be declared. In below example we have publisher class which is publishing the event and subscriber class is &lt;span style="color: #2b91af;"&gt;Program. &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 10pt;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 10pt;"&gt;&lt;u&gt;&lt;span style="font-family: Calibri;"&gt;Code Example&lt;/span&gt;&lt;/u&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 10pt;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 10pt;"&gt;&lt;span style="font-family: Calibri;"&gt;Main Method&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="color: blue; font-family: Consolas; font-size: 9.5pt;"&gt;class&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt; &lt;span style="color: #2b91af;"&gt;Program&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: green;"&gt;//This is simple method which will write into console&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; Logger(&lt;span style="color: blue;"&gt;string&lt;/span&gt; s)&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #2b91af;"&gt;Console&lt;/span&gt;.WriteLine(s);&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; Main(&lt;span style="color: blue;"&gt;string&lt;/span&gt;[] args)&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #2b91af;"&gt;FileLoggerClass&lt;/span&gt; fl = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;FileLoggerClass&lt;/span&gt;(&lt;span style="color: #a31515;"&gt;"process.log"&lt;/span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #2b91af;"&gt;PublisherClass&lt;/span&gt; publisherClass = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;PublisherClass&lt;/span&gt;();&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: green;"&gt;// Subscribe the Functions Logger and fl.Logger&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;publisherClass.Log += &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;PublisherClass&lt;/span&gt;.&lt;span style="color: #2b91af;"&gt;LogHandler&lt;/span&gt;(Logger);&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;publisherClass.Log += &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;PublisherClass&lt;/span&gt;.&lt;span style="color: #2b91af;"&gt;LogHandler&lt;/span&gt;(fl.LoggerMethod);&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: green;"&gt;// The Event will now be triggered in the Process() Method&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;publisherClass.Process();&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;fl.Close();&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;Publisher Class&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="color: blue; font-family: Consolas; font-size: 9.5pt;"&gt;class&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt; &lt;span style="color: #2b91af;"&gt;PublisherClass&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;delegate&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;LogHandler&lt;/span&gt;(&lt;span style="color: blue;"&gt;string&lt;/span&gt; message);&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: green;"&gt;// Define an Event based on the above Delegate&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;event&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;LogHandler&lt;/span&gt; Log;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: green;"&gt;// Instead of having the Process() function take a delegate&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: green;"&gt;// as a parameter, we've declared a Log event. Call the Event,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: green;"&gt;// using the OnXXXX Method, where XXXX is the name of the Event.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; Process()&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;OnLog(&lt;span style="color: #a31515;"&gt;"Process() begin"&lt;/span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;OnLog(&lt;span style="color: #a31515;"&gt;"Process() end"&lt;/span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: green;"&gt;// By Default, create an OnXXXX Method, to call the Event&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;protected&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; OnLog(&lt;span style="color: blue;"&gt;string&lt;/span&gt; message)&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;if&lt;/span&gt; (Log != &lt;span style="color: blue;"&gt;null&lt;/span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Log(message);&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;Simple File logger class&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="color: blue; font-family: Consolas; font-size: 9.5pt;"&gt;class&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt; &lt;span style="color: #2b91af;"&gt;FileLoggerClass&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #2b91af;"&gt;FileStream&lt;/span&gt; fileStream;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #2b91af;"&gt;StreamWriter&lt;/span&gt; streamWriter;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: green;"&gt;// Constructor&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt; FileLoggerClass(&lt;span style="color: blue;"&gt;string&lt;/span&gt; filename)&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;fileStream = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;FileStream&lt;/span&gt;(filename, &lt;span style="color: #2b91af;"&gt;FileMode&lt;/span&gt;.Create);&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;streamWriter = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;StreamWriter&lt;/span&gt;(fileStream);&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: green;"&gt;// Member Function which is used in the Delegate&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; LoggerMethod(&lt;span style="color: blue;"&gt;string&lt;/span&gt; s)&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;streamWriter.WriteLine(s);&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; Close()&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;streamWriter.Close();&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;fileStream.Close();&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ImtiazAhmednetDeveloperBlog/~4/gopbZp4_aqA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://smartdotnetguru.blogspot.com/feeds/7363100726360456989/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://smartdotnetguru.blogspot.com/2011/05/delegates-and-events.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/628409642257510754/posts/default/7363100726360456989?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/628409642257510754/posts/default/7363100726360456989?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ImtiazAhmednetDeveloperBlog/~3/gopbZp4_aqA/delegates-and-events.html" title="Delegates and Events" /><author><name>Imtiaz</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://3.bp.blogspot.com/-qzQpOG3uBgc/Tb9g5svjgKI/AAAAAAAAAIM/LrrhwPccfII/s220/Imtiaz%2527Photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://smartdotnetguru.blogspot.com/2011/05/delegates-and-events.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkAHSXkyeip7ImA9WhZXF0Q.&quot;"><id>tag:blogger.com,1999:blog-628409642257510754.post-6130864088887999713</id><published>2011-05-07T13:03:00.000-07:00</published><updated>2011-05-07T13:05:38.792-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-07T13:05:38.792-07:00</app:edited><title>Design Principles</title><content type="html">1. Open Close Principle&lt;br /&gt;Software entities like classes, modules and functions should be open for extension but closed for modifications.&lt;br /&gt;&lt;br /&gt;2. Dependency Inversion&lt;br /&gt;      High-level modules should not depend on low-level modules. Both should depend                                   on abstractions.&lt;br /&gt;        Abstractions should not depend on details. Details should depend on         abstractions&lt;br /&gt;3. Interface Segregation&lt;br /&gt;      Clients should not be forced to depend upon interfaces that they don't use.&lt;br /&gt;&lt;br /&gt;4. Single Responsibility &lt;br /&gt;      A class should have only one reason to change.&lt;img src="http://feeds.feedburner.com/~r/ImtiazAhmednetDeveloperBlog/~4/ikbhg-H_Q7g" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://smartdotnetguru.blogspot.com/feeds/6130864088887999713/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://smartdotnetguru.blogspot.com/2011/05/design-principles.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/628409642257510754/posts/default/6130864088887999713?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/628409642257510754/posts/default/6130864088887999713?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ImtiazAhmednetDeveloperBlog/~3/ikbhg-H_Q7g/design-principles.html" title="Design Principles" /><author><name>Imtiaz</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://3.bp.blogspot.com/-qzQpOG3uBgc/Tb9g5svjgKI/AAAAAAAAAIM/LrrhwPccfII/s220/Imtiaz%2527Photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://smartdotnetguru.blogspot.com/2011/05/design-principles.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkEMRHc-fSp7ImA9WhZVFkw.&quot;"><id>tag:blogger.com,1999:blog-628409642257510754.post-903996776990470097</id><published>2011-05-07T02:41:00.001-07:00</published><updated>2011-05-28T14:38:05.955-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-28T14:38:05.955-07:00</app:edited><title>Composition and Aggregation</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;strong&gt;&lt;u&gt;Composition&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
1. Compostion is 'Part of' Relation.&lt;br /&gt;
2. The life time of the object managed by main class.  If main class&lt;br /&gt;
destroyed composited object also destroyed. &lt;br /&gt;
3. In UML diagram composition shows with filled diagram.&lt;br /&gt;
&lt;br /&gt;
in below example if Car object destroyed Engine object also destroyed.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://4.bp.blogspot.com/-HNuVM7-Gyu0/TcUXHotyjZI/AAAAAAAAAJM/_57Xto5Ozso/s1600/Composition.gif"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5603910731288448402" src="http://4.bp.blogspot.com/-HNuVM7-Gyu0/TcUXHotyjZI/AAAAAAAAAJM/_57Xto5Ozso/s320/Composition.gif" style="cursor: pointer; display: block; height: 94px; margin: 0px auto 10px; text-align: center; width: 263px;" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;u&gt;Aggregation&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
Agregation gives 'has a' relationship.  Even if main objecte destroyed aggregated object does not destroyed. &lt;br /&gt;
If you take Customer class and Address Class. We can say that customer has address we dont say Address is part of the customer.  Aggregation show in UML diagram with unfilled diamond.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://3.bp.blogspot.com/-XHTPM11jbNU/TcUZAqytNWI/AAAAAAAAAJU/iQygkRo71R0/s1600/Aggregation.jpg"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5603912810610111842" src="http://3.bp.blogspot.com/-XHTPM11jbNU/TcUZAqytNWI/AAAAAAAAAJU/iQygkRo71R0/s320/Aggregation.jpg" style="cursor: pointer; display: block; height: 94px; margin: 0px auto 10px; text-align: center; width: 264px;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ImtiazAhmednetDeveloperBlog/~4/TCM6YC1FqVU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://smartdotnetguru.blogspot.com/feeds/903996776990470097/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://smartdotnetguru.blogspot.com/2011/05/compostion-and-aggregation.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/628409642257510754/posts/default/903996776990470097?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/628409642257510754/posts/default/903996776990470097?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ImtiazAhmednetDeveloperBlog/~3/TCM6YC1FqVU/compostion-and-aggregation.html" title="Composition and Aggregation" /><author><name>Imtiaz</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://3.bp.blogspot.com/-qzQpOG3uBgc/Tb9g5svjgKI/AAAAAAAAAIM/LrrhwPccfII/s220/Imtiaz%2527Photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-HNuVM7-Gyu0/TcUXHotyjZI/AAAAAAAAAJM/_57Xto5Ozso/s72-c/Composition.gif" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://smartdotnetguru.blogspot.com/2011/05/compostion-and-aggregation.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0cNQ3g6eCp7ImA9WhZXE0U.&quot;"><id>tag:blogger.com,1999:blog-628409642257510754.post-6060200947995857678</id><published>2011-05-02T19:18:00.000-07:00</published><updated>2011-05-02T19:18:12.610-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-02T19:18:12.610-07:00</app:edited><title>Reflection in .NET</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;strong&gt;Reflection&lt;/strong&gt; - The process of getting the metadata from modules/assemblies. When .NET code is compiled, metadata about the types defined in the modules is produced. These modules are in turn packaged as assemblied. The process of accessing this metadata in called Reflection. &lt;br /&gt;
The namespace System.Reflection contains classes that can be used for interrogating the types for a module/assembly. We use reflection for examining data type sizes for marshalling across process &amp;amp; machine boundaries.&lt;br /&gt;
&lt;br /&gt;
.NET Framework's Reflection API allows you to fetch type (assembly) information at runtime programmatically. We can also achieve late binding by using .NET Reflection. At runtime, the Reflection mechanism uses the PE file to read information about the assembly. Reflection enables you to use code that is not available at compile time. .NET Reflection allows an application to collect information about itself and also to manipulate on itself. It can be used effectively to find all types in an assembly and/or dynamically invoke methods in an assembly. This includes information about the type, properties, methods, and events of an object. With Reflection, we can dynamically create an instance of a type, bind the type to an existing object, or get the type from an existing object and invoke its methods or access its fields and properties. We can also access attribute information using Reflection.&lt;br /&gt;
&lt;br /&gt;
Assembly contain the modules, modules contain the types and type contain members. You can use the reflection to create the instance of the types dynamically. You can invoke the type's method dynamically and can access the fields information.&lt;br /&gt;
&lt;br /&gt;
List of classes which we using in reflection:&lt;br /&gt;
&lt;ol style="text-align: left;"&gt;&lt;li&gt;Assemly&lt;/li&gt;
&lt;li&gt;Module&lt;/li&gt;
&lt;li&gt;ConstructorInfo&lt;/li&gt;
&lt;li&gt;MethodInfo&lt;/li&gt;
&lt;li&gt;FieldInfo&lt;/li&gt;
&lt;li&gt;EventInfo&lt;/li&gt;
&lt;li&gt;PropertyInfo&lt;/li&gt;
&lt;li&gt;ParameterInfo&lt;/li&gt;
&lt;/ol&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ImtiazAhmednetDeveloperBlog/~4/9iQ5EcLCI3Q" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://smartdotnetguru.blogspot.com/feeds/6060200947995857678/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://smartdotnetguru.blogspot.com/2011/05/reflection-in-net.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/628409642257510754/posts/default/6060200947995857678?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/628409642257510754/posts/default/6060200947995857678?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ImtiazAhmednetDeveloperBlog/~3/9iQ5EcLCI3Q/reflection-in-net.html" title="Reflection in .NET" /><author><name>Imtiaz</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://3.bp.blogspot.com/-qzQpOG3uBgc/Tb9g5svjgKI/AAAAAAAAAIM/LrrhwPccfII/s220/Imtiaz%2527Photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://smartdotnetguru.blogspot.com/2011/05/reflection-in-net.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUQNSHkzeSp7ImA9WhZXEUU.&quot;"><id>tag:blogger.com,1999:blog-628409642257510754.post-3057835442767458442</id><published>2011-04-30T09:20:00.001-07:00</published><updated>2011-04-30T10:09:59.781-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-30T10:09:59.781-07:00</app:edited><title>IComparable and IComparer Interface in .NET</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;span style="color: orange;"&gt;&lt;strong&gt;&lt;u&gt;IComparable&lt;/u&gt;&lt;/strong&gt; &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
The &lt;em&gt;&lt;strong&gt;IComparable&lt;/strong&gt;&lt;/em&gt; allows us to create a type-specific comparison method. If we implement the IComparable interface, we need to implement the IComparable’s member: &lt;em&gt;&lt;strong&gt;CompareTo&lt;/strong&gt;&lt;/em&gt; method. We usually compare if two instances of that class are equal using IComparable.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;u&gt;&lt;span style="color: orange;"&gt;IComparer &lt;/span&gt;&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;
The &lt;em&gt;&lt;strong&gt;IComparer&lt;/strong&gt;&lt;/em&gt; also allows us to create a type-specific comparison method. If we implement the IComparer interface, we need to implement the IComparer’s member: &lt;em&gt;&lt;strong&gt;Compare&lt;/strong&gt;&lt;/em&gt; method. We usually customize the sort order of a collection using IComparer.&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ImtiazAhmednetDeveloperBlog/~4/SBwRKKX_bS0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://smartdotnetguru.blogspot.com/feeds/3057835442767458442/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://smartdotnetguru.blogspot.com/2011/04/icomparable-and-icomparer-interface-in.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/628409642257510754/posts/default/3057835442767458442?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/628409642257510754/posts/default/3057835442767458442?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ImtiazAhmednetDeveloperBlog/~3/SBwRKKX_bS0/icomparable-and-icomparer-interface-in.html" title="IComparable and IComparer Interface in .NET" /><author><name>Imtiaz</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://3.bp.blogspot.com/-qzQpOG3uBgc/Tb9g5svjgKI/AAAAAAAAAIM/LrrhwPccfII/s220/Imtiaz%2527Photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://smartdotnetguru.blogspot.com/2011/04/icomparable-and-icomparer-interface-in.html</feedburner:origLink></entry></feed>
