<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"
      xmlns:rhaptos="https://trac.rhaptos.org/trac/rhaptos/wiki/LensAPI">

    <!-- <feed spoof comment - move above feed to get browser to show xml  -->
    
        <author>swong</author>
        <title type="text">Design Patterns</title>
        <name>Design Patterns</name>
        <subtitle type="text/html">&lt;p&gt;This lens is a collection of modules discussing various design patterns in object-oriented programming and design.    &lt;/p&gt;

&lt;p&gt;Design patterns are design solutions to recurring problems in software construction.   Object-oriented design patterns present themselves as collections of classes and/or interfaces connected by specific inheritance and/or composition relationships.   These are accompanied by coding templates and specific semantics.  Design patterns form a cohesive language that can be used to describe classic solutions to common design problems.  These patterns enable us to discuss systems of objects as quasi-encapsulated entities.  Design patterns are very successful at capturing the inherent abstractions of the problem.  By using design patterns to solve programming problems, the proper perspective on the design process can be maintained.  &lt;/p&gt;

&lt;p&gt;Design patterns persist in software development because they embody one or more fundamental principles of computer science.  In such, design patterns form a very useful "meta-language" that can be used to illustrate and reinforce many key concepts in programming.  Design patterns provide ways to structure software components into systems that are flexible, extensible, and have a high degree of reusability.&lt;/p&gt;

&lt;p&gt;These pattern discussions, except for the Union, Null and Model-View-Controller patterns are adapted from the classic text, Design Patterns by Gamma, Helm, Johnson and Vlissides (Addison Wesley Longman, 1995.  ISBN 0-201-63361-2).   Anyone serious about learning object oriented programming should own this book.&lt;/p&gt;

&lt;p&gt;These modules were created a resource for the CNX course &lt;a href = "http://cnx.org/content/col10213/latest/"&gt;"Priniciples of Object-Oriented Programming"&lt;/a&gt;&lt;/p&gt;</subtitle>
        <id>design-patterns</id>
        <category term="List"/>
        <rights>http://creativecommons.org/licenses/by/3.0/</rights>
        
        <rhaptos:ownerUrl>http://cnx.org/content/col10213/latest/</rhaptos:ownerUrl>
        <rhaptos:ownerUrlText>Visit Web page for "Principles of Object-Oriented Programming" collection</rhaptos:ownerUrlText>
        <rhaptos:public>true</rhaptos:public>
        <rhaptos:recieveEmailOnUpdate>false</rhaptos:recieveEmailOnUpdate>
        <rhaptos:hasTagCloud>true</rhaptos:hasTagCloud>
        <rhaptos:language>en</rhaptos:language>
        
            <entry>
                <author>Stephen Wong, Antonio Garcia Castañeda</author>
                <title type="text">Null Design Pattern</title>
                <content type="application/xhtml+xml" xml:lang="en">
                  <div xmlns="http://www.w3.org/1999/xhtml" class="comment">
                  <span>
                      <strong>Comment:</strong>
                        <p>An object that represents the lack of an object.</p>
                    </span>
                    <span>
                      <strong>Tags:</strong>
                      <ul class="tags">
                          
                              <li>null</li>
                          
                          
                              <li>design</li>
                          
                          
                              <li>pattern</li>
                          
                      </ul>
                    </span>
                  </div>
                </content>
                <id>m17227</id>
                <link href="/content/m17227/latest/"
                      rel="alternate"/>
                <rhaptos:inclusive>True</rhaptos:inclusive>
                <rhaptos:versionStart>1.2</rhaptos:versionStart>
                <rhaptos:versionStop>latest</rhaptos:versionStop>
            </entry>
        
        
            <entry>
                <author>Stephen Wong, Antonio Garcia Castañeda</author>
                <title type="text">Abstract Factory Design Pattern</title>
                <content type="application/xhtml+xml" xml:lang="en">
                  <div xmlns="http://www.w3.org/1999/xhtml" class="comment">
                  <span>
                      <strong>Comment:</strong>
                        <p>An object responsible for the creation of another object(s)</p>
                    </span>
                    <span>
                      <strong>Tags:</strong>
                      <ul class="tags">
                          
                              <li>abstract</li>
                          
                          
                              <li>factory</li>
                          
                          
                              <li>design</li>
                          
                          
                              <li>pattern</li>
                          
                      </ul>
                    </span>
                  </div>
                </content>
                <id>m17203</id>
                <link href="/content/m17203/latest/"
                      rel="alternate"/>
                <rhaptos:inclusive>True</rhaptos:inclusive>
                <rhaptos:versionStart>1.2</rhaptos:versionStart>
                <rhaptos:versionStop>latest</rhaptos:versionStop>
            </entry>
        
        
            <entry>
                <author>Stephen Wong</author>
                <title type="text">Template Design Pattern</title>
                <content type="application/xhtml+xml" xml:lang="en">
                  <div xmlns="http://www.w3.org/1999/xhtml" class="comment">
                  <span>
                      <strong>Comment:</strong>
                        <p>An invariant concrete process that utilizes abstract sub-processes</p>
                    </span>
                    <span>
                      <strong>Tags:</strong>
                      <ul class="tags">
                          
                              <li>template</li>
                          
                          
                              <li>design</li>
                          
                          
                              <li>pattern</li>
                          
                      </ul>
                    </span>
                  </div>
                </content>
                <id>m17188</id>
                <link href="/content/m17188/latest/"
                      rel="alternate"/>
                <rhaptos:inclusive>True</rhaptos:inclusive>
                <rhaptos:versionStart>1.2</rhaptos:versionStart>
                <rhaptos:versionStop>latest</rhaptos:versionStop>
            </entry>
        
        
            <entry>
                <author>Stephen Wong, Dung Nguyen</author>
                <title type="text">Command Design Pattern</title>
                <content type="application/xhtml+xml" xml:lang="en">
                  <div xmlns="http://www.w3.org/1999/xhtml" class="comment">
                  <span>
                      <strong>Comment:</strong>
                        <p>An object that represents a request for another object to do something.</p>
                    </span>
                    <span>
                      <strong>Tags:</strong>
                      <ul class="tags">
                          
                              <li>command</li>
                          
                          
                              <li>design</li>
                          
                          
                              <li>pattern</li>
                          
                      </ul>
                    </span>
                  </div>
                </content>
                <id>m17187</id>
                <link href="/content/m17187/latest/"
                      rel="alternate"/>
                <rhaptos:inclusive>True</rhaptos:inclusive>
                <rhaptos:versionStart>1.2</rhaptos:versionStart>
                <rhaptos:versionStop>latest</rhaptos:versionStop>
            </entry>
        
        
            <entry>
                <author>Stephen Wong</author>
                <title type="text">Model-View-Controller Design Pattern</title>
                <content type="application/xhtml+xml" xml:lang="en">
                  <div xmlns="http://www.w3.org/1999/xhtml" class="comment">
                  <span>
                      <strong>Comment:</strong>
                        <p>Decouples the model from the view in a large system</p>
                    </span>
                    <span>
                      <strong>Tags:</strong>
                      <ul class="tags">
                          
                              <li>MVC</li>
                          
                          
                              <li>model</li>
                          
                          
                              <li>view</li>
                          
                          
                              <li>controller</li>
                          
                          
                              <li>design</li>
                          
                          
                              <li>pattern</li>
                          
                      </ul>
                    </span>
                  </div>
                </content>
                <id>m26104</id>
                <link href="/content/m26104/latest/"
                      rel="alternate"/>
                <rhaptos:inclusive>True</rhaptos:inclusive>
                <rhaptos:versionStart>1.2</rhaptos:versionStart>
                <rhaptos:versionStop>latest</rhaptos:versionStop>
            </entry>
        
        
            <entry>
                <author>Stephen Wong, Dung Nguyen</author>
                <title type="text">State Design Pattern</title>
                <content type="application/xhtml+xml" xml:lang="en">
                  <div xmlns="http://www.w3.org/1999/xhtml" class="comment">
                  <span>
                      <strong>Comment:</strong>
                        <p>Allows an object to dynamically change its behaviors as per different states of being.</p>
                    </span>
                    <span>
                      <strong>Tags:</strong>
                      <ul class="tags">
                          
                              <li>state</li>
                          
                          
                              <li>design</li>
                          
                          
                              <li>pattern</li>
                          
                      </ul>
                    </span>
                  </div>
                </content>
                <id>m17047</id>
                <link href="/content/m17047/latest/"
                      rel="alternate"/>
                <rhaptos:inclusive>True</rhaptos:inclusive>
                <rhaptos:versionStart>1.3</rhaptos:versionStart>
                <rhaptos:versionStop>latest</rhaptos:versionStop>
            </entry>
        
        
            <entry>
                <author>Stephen Wong</author>
                <title type="text">Composite Design Pattern</title>
                <content type="application/xhtml+xml" xml:lang="en">
                  <div xmlns="http://www.w3.org/1999/xhtml" class="comment">
                  <span>
                      <strong>Comment:</strong>
                        <p>Represents a recursive data structure</p>
                    </span>
                    <span>
                      <strong>Tags:</strong>
                      <ul class="tags">
                          
                              <li>composite</li>
                          
                          
                              <li>recusive</li>
                          
                          
                              <li>recursion</li>
                          
                          
                              <li>design</li>
                          
                          
                              <li>pattern</li>
                          
                      </ul>
                    </span>
                  </div>
                </content>
                <id>m14795</id>
                <link href="/content/m14795/latest/"
                      rel="alternate"/>
                <rhaptos:inclusive>True</rhaptos:inclusive>
                <rhaptos:versionStart>1.1</rhaptos:versionStart>
                <rhaptos:versionStop>latest</rhaptos:versionStop>
            </entry>
        
        
            <entry>
                <author>Stephen Wong</author>
                <title type="text">Union Design Pattern</title>
                <content type="application/xhtml+xml" xml:lang="en">
                  <div xmlns="http://www.w3.org/1999/xhtml" class="comment">
                  <span>
                      <strong>Comment:</strong>
                        <p>Enables the decoupling of a data structure from its algorithms</p>
                    </span>
                    <span>
                      <strong>Tags:</strong>
                      <ul class="tags">
                          
                              <li>visitor</li>
                          
                          
                              <li>double-dispatch</li>
                          
                          
                              <li>design</li>
                          
                          
                              <li>pattern</li>
                          
                      </ul>
                    </span>
                  </div>
                </content>
                <id>m14622</id>
                <link href="/content/m14622/latest/"
                      rel="alternate"/>
                <rhaptos:inclusive>True</rhaptos:inclusive>
                <rhaptos:versionStart>1.1</rhaptos:versionStart>
                <rhaptos:versionStop>latest</rhaptos:versionStop>
            </entry>
        
        
            <entry>
                <author>Stephen Wong</author>
                <title type="text">Flyweight Design Pattern</title>
                <content type="application/xhtml+xml" xml:lang="en">
                  <div xmlns="http://www.w3.org/1999/xhtml" class="comment">
                  <span>
                      <strong>Comment:</strong>
                        <p>Allows the reuse of objects in a larger set of objects</p>
                    </span>
                    <span>
                      <strong>Tags:</strong>
                      <ul class="tags">
                          
                              <li>flyweight</li>
                          
                          
                              <li>design</li>
                          
                          
                              <li>pattern</li>
                          
                      </ul>
                    </span>
                  </div>
                </content>
                <id>m26103</id>
                <link href="/content/m26103/latest/"
                      rel="alternate"/>
                <rhaptos:inclusive>True</rhaptos:inclusive>
                <rhaptos:versionStart>1.3</rhaptos:versionStart>
                <rhaptos:versionStop>latest</rhaptos:versionStop>
            </entry>
        
        
            <entry>
                <author>Stephen Wong</author>
                <title type="text">Adapter Design Pattern</title>
                <content type="application/xhtml+xml" xml:lang="en">
                  <div xmlns="http://www.w3.org/1999/xhtml" class="comment">
                  <span>
                      <strong>Comment:</strong>
                        <p>Allows for decoupled communications between two objects that expect different interfaces.</p>
                    </span>
                    <span>
                      <strong>Tags:</strong>
                      <ul class="tags">
                          
                              <li>adapter</li>
                          
                          
                              <li>design</li>
                          
                          
                              <li>pattern</li>
                          
                      </ul>
                    </span>
                  </div>
                </content>
                <id>m14623</id>
                <link href="/content/m14623/latest/"
                      rel="alternate"/>
                <rhaptos:inclusive>True</rhaptos:inclusive>
                <rhaptos:versionStart>1.1</rhaptos:versionStart>
                <rhaptos:versionStop>latest</rhaptos:versionStop>
            </entry>
        
        
            <entry>
                <author>Stephen Wong, Dung Nguyen, Antonio Garcia Castañeda</author>
                <title type="text">Strategy Design Pattern</title>
                <content type="application/xhtml+xml" xml:lang="en">
                  <div xmlns="http://www.w3.org/1999/xhtml" class="comment">
                  <span>
                      <strong>Comment:</strong>
                        <p>Provides an abstract means of performing particular operations for an object.</p>
                    </span>
                    <span>
                      <strong>Tags:</strong>
                      <ul class="tags">
                          
                              <li>strategy</li>
                          
                          
                              <li>design</li>
                          
                          
                              <li>pattern</li>
                          
                      </ul>
                    </span>
                  </div>
                </content>
                <id>m17037</id>
                <link href="/content/m17037/latest/"
                      rel="alternate"/>
                <rhaptos:inclusive>True</rhaptos:inclusive>
                <rhaptos:versionStart>1.4</rhaptos:versionStart>
                <rhaptos:versionStop>latest</rhaptos:versionStop>
            </entry>
        
        
            <entry>
                <author>Stephen Wong</author>
                <title type="text">Decorator Design Pattern</title>
                <content type="application/xhtml+xml" xml:lang="en">
                  <div xmlns="http://www.w3.org/1999/xhtml" class="comment">
                  <span>
                      <strong>Comment:</strong>
                        <p>Add functionality to an existing module at run-time.</p>
                    </span>
                    <span>
                      <strong>Tags:</strong>
                      <ul class="tags">
                          
                              <li>decorator</li>
                          
                          
                              <li>design</li>
                          
                          
                              <li>pattern</li>
                          
                      </ul>
                    </span>
                  </div>
                </content>
                <id>m26102</id>
                <link href="/content/m26102/latest/"
                      rel="alternate"/>
                <rhaptos:inclusive>True</rhaptos:inclusive>
                <rhaptos:versionStart>1.1</rhaptos:versionStart>
                <rhaptos:versionStop>latest</rhaptos:versionStop>
            </entry>
        
        
            <entry>
                <author>Stephen Wong</author>
                <title type="text">Observer-Observable Design Pattern</title>
                <content type="application/xhtml+xml" xml:lang="en">
                  <div xmlns="http://www.w3.org/1999/xhtml" class="comment">
                  <span>
                      <strong>Comment:</strong>
                        <p>Enables centralized, transparent, one-way communications to a set of decoupled objects</p>
                    </span>
                    <span>
                      <strong>Tags:</strong>
                      <ul class="tags">
                          
                              <li>observer</li>
                          
                          
                              <li>observable</li>
                          
                          
                              <li>design</li>
                          
                          
                              <li>pattern</li>
                          
                      </ul>
                    </span>
                  </div>
                </content>
                <id>m26416</id>
                <link href="/content/m26416/latest/"
                      rel="alternate"/>
                <rhaptos:inclusive>True</rhaptos:inclusive>
                <rhaptos:versionStart>1.1</rhaptos:versionStart>
                <rhaptos:versionStop>latest</rhaptos:versionStop>
            </entry>
        
        
            <entry>
                <author>Stephen Wong</author>
                <title type="text">Singleton Design Pattern</title>
                <content type="application/xhtml+xml" xml:lang="en">
                  <div xmlns="http://www.w3.org/1999/xhtml" class="comment">
                  <span>
                      <strong>Comment:</strong>
                        <p>Enables only a single instance of a class to exist.</p>
                    </span>
                    <span>
                      <strong>Tags:</strong>
                      <ul class="tags">
                          
                              <li>singleton</li>
                          
                          
                              <li>design</li>
                          
                          
                              <li>pattern</li>
                          
                      </ul>
                    </span>
                  </div>
                </content>
                <id>m26426</id>
                <link href="/content/m26426/latest/"
                      rel="alternate"/>
                <rhaptos:inclusive>True</rhaptos:inclusive>
                <rhaptos:versionStart>1.1</rhaptos:versionStart>
                <rhaptos:versionStop>latest</rhaptos:versionStop>
            </entry>
        
        
            <entry>
                <author>Stephen Wong</author>
                <title type="text">Interpreter Design Pettern</title>
                <content type="application/xhtml+xml" xml:lang="en">
                  <div xmlns="http://www.w3.org/1999/xhtml" class="comment">
                  <span>
                      <strong>Comment:</strong>
                        <p>Recursive algorithms on composite structures </p>
                    </span>
                    <span>
                      <strong>Tags:</strong>
                      <ul class="tags">
                          
                              <li>interpreter</li>
                          
                          
                              <li>recursion</li>
                          
                          
                              <li>composite</li>
                          
                          
                              <li>design</li>
                          
                          
                              <li>pattern</li>
                          
                      </ul>
                    </span>
                  </div>
                </content>
                <id>m16877</id>
                <link href="/content/m16877/latest/"
                      rel="alternate"/>
                <rhaptos:inclusive>True</rhaptos:inclusive>
                <rhaptos:versionStart>1.2</rhaptos:versionStart>
                <rhaptos:versionStop>latest</rhaptos:versionStop>
            </entry>
        
        
            <entry>
                <author>Stephen Wong</author>
                <title type="text">Visitor Design Pattern</title>
                <content type="application/xhtml+xml" xml:lang="en">
                  <div xmlns="http://www.w3.org/1999/xhtml" class="comment">
                  <span>
                      <strong>Comment:</strong>
                        <p>Decouples a data structure from its algorithms</p>
                    </span>
                    <span>
                      <strong>Tags:</strong>
                      <ul class="tags">
                          
                              <li>visitor</li>
                          
                          
                              <li>data</li>
                          
                          
                              <li>structure</li>
                          
                          
                              <li>algorithm</li>
                          
                          
                              <li>double-dispatch</li>
                          
                          
                              <li>design</li>
                          
                          
                              <li>pattern</li>
                          
                      </ul>
                    </span>
                  </div>
                </content>
                <id>m26430</id>
                <link href="/content/m26430/latest/"
                      rel="alternate"/>
                <rhaptos:inclusive>True</rhaptos:inclusive>
                <rhaptos:versionStart>1.1</rhaptos:versionStart>
                <rhaptos:versionStop>latest</rhaptos:versionStop>
            </entry>
        
    
    
</feed>
