<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.expertiza.ncsu.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ndokuzo</id>
	<title>Expertiza_Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.expertiza.ncsu.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ndokuzo"/>
	<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Special:Contributions/Ndokuzo"/>
	<updated>2026-06-03T16:49:52Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=9992</id>
		<title>CSC/ECE 517 Fall 2007/wiki3 5 ns</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=9992"/>
		<updated>2007-11-28T15:28:24Z</updated>

		<summary type="html">&lt;p&gt;Ndokuzo: /* Creator Pattern vs Factory Pattern */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''Take the Creator pattern and catalog the information on it available on the Web. Explain how it is different from the Factory pattern. Find good descriptions and good, concise, understandable examples. Tell which you consider the best to present to a class.''&lt;br /&gt;
=GRASP=&lt;br /&gt;
GRASP stands for '''G'''eneral '''R'''esponsibility '''A'''ssignment '''S'''oftware '''P'''atterns (or '''P'''rinciples), and they are the common object-oriented design patterns or principles that assign responsibility to classes and objects.&lt;br /&gt;
Some of GRASP includes Information Expert, Creator, Controller, Low Coupling, High Cohesion, Polymorphism, Pure Fabrication, Indirection, and Protected Variations.&lt;br /&gt;
&lt;br /&gt;
=What is Creator Pattern?=&lt;br /&gt;
Creator Pattern is one of the GRASP approaches, which is developed to find an answer to the question of &amp;quot;Who creates an object of class A?&amp;quot; in object-oriented systems. &lt;br /&gt;
Creator pattern suggests that&lt;br /&gt;
Class B should create an instance of Class A if&lt;br /&gt;
* B aggregates instances of A, or;&lt;br /&gt;
* B contains instances of A, or;&lt;br /&gt;
* B records instances of A, or;&lt;br /&gt;
* B closely uses instances of A, or;&lt;br /&gt;
* B has the necessary information for creating the new instance of A.&lt;br /&gt;
&lt;br /&gt;
=What is Factory Pattern?=&lt;br /&gt;
Factory pattern is one of the creational patterns which is used to answer the question &amp;quot;How should a class A instantiate one of the classes B,C,D but still be independent from them?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Factory pattern suggests the creation of a Factory class or a Factory method to which the responsibility of instantiating the object (one of the B,C,D classes) is delegated. This object instance is then returned to class A. For example, currently the factory method might be returning the instance of B, later the requirements might change and A needs to instantiate C. Then, the change in the code is only at the Factory method or Factory class. This ensures that the changes in requirements, require changes in minimum number of places throughout the code.&lt;br /&gt;
&lt;br /&gt;
=Creator Pattern vs Factory Pattern=&lt;br /&gt;
The subtle difference between the Creator and Factory pattern can be made out from the synopsis for both the patterns as put by Mark Grand in his book &amp;quot;Patterns in Java&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;Synopsis for Creator Pattern&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; (one of the GRASP patterns)&lt;br /&gt;
&amp;quot;Creator pattern is used to determine which class should create instances of a class based on the relationship between potential creator classes and the class to be instantiated.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;Synopsis for Factory Pattern&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; (one of the Creational Patterns)&lt;br /&gt;
&amp;quot;In Factory pattern, a class is organized so that it can instantiate other classes without being dependent on any of the classes it instantiates. This reusable class is able to remain independent of the classes it instantiates by delegating the choice of which class to instantiate to another object and referring to the newly created object through a common interface.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Thus, the Creator Pattern gives us the guidelines for determining which class should be creating the instances of a particular class depending on the relationship between theses classes. The Factory Pattern provides guidelines to deal with the problem of creating objects without specifying the exact class of object that will be created.The factory method design pattern defines a separate method for creating the objects, which subclasses can then override to specify the derived type of product that will be created. More generally, the term factory method is often used to refer to any method whose main purpose is creation of objects.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;i&amp;gt;Advantages of Creator Pattern&amp;lt;/i&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
# The creator pattern promotes low coupling by making instances of a class responsible for creating objects they need to reference.&lt;br /&gt;
# The referencing class itself creates the objects of the classes it references and hence it avoids being dependent on another class to create objects for itself. &lt;br /&gt;
# By having the aggregate class create the child class, we ensure that the Information Expert, High Cohesion and Low coupling patterns also hold.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;i&amp;gt;Advantages of Factory Pattern&amp;lt;/i&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
# The creation requester class is independent of the class of concrete product objects actually created.&lt;br /&gt;
# The set of product classes that can be instantiated may change dynamically.&lt;br /&gt;
&lt;br /&gt;
From the advantages it might seem that Creator patterns contradicts what is proposed by the Factory Pattern. But the difference that needs to be noted is in the relationship between the classes.&lt;br /&gt;
&lt;br /&gt;
In Creator Pattern, the responsibility of object creation is given to the class itself ONLY IF the class aggregates the class of the object it creates. The Factory Pattern deals with the object creation by classes unrelated to the class of the object it instantiates. In this situation, Factory Pattern suggests the delegation of the responsibility to another class or method.&lt;br /&gt;
&lt;br /&gt;
= Example for Creator Pattern =&lt;br /&gt;
The following example was one of the best examples that we saw while searching this topic. The resources found online are generally brief, and use the same example for describing creator pattern, thus we feel the intuitiveness in this example makes it a better option than the one in the web. So we propose this example as the ''best example for teaching Creator Pattern in class.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;i&amp;gt;Employee Time Keeping System &amp;lt;/i&amp;gt;&amp;lt;/u&amp;gt; ( from Mark Grand's book &amp;quot;Patterns in Java&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
This example is used to determine how many hours an employee works during a PayPeriod. During a PayPeriod an employee works for periods of time called Shifts. The system learns about shifts worked by an employee as it receives TimeKeepingEvents.&lt;br /&gt;
The classes used to represent this is shown in below Class Diagram:&lt;br /&gt;
&lt;br /&gt;
[[Image:wiki3.jpg]]&lt;br /&gt;
&lt;br /&gt;
From the diagram we can infer that instances of PayPeriod class compose instances of Shift class. Instances of Shift class compose instances of TimeKeepingEvents class. The subclasses of TimeKeepingEvents represent the time employee started a shift, started a break, ended a break and ended a shift.&lt;br /&gt;
&lt;br /&gt;
Here the problem is determining which classes are responsible for creating instances of Shift and TimeKeepingEvent classes... &lt;br /&gt;
&lt;br /&gt;
The Creator Pattern states that a class that composes or aggregates instances of another class in a good class to assign responsibility of creating instances of the composed or aggregated classes. &lt;br /&gt;
&lt;br /&gt;
By following the Creator pattern, creating instances of TimeKeepingEvent should be assigned to Shift class, and creating instances of Shift class should be assigned to PayPeriod.&lt;br /&gt;
&lt;br /&gt;
=Information Available on the Web=&lt;br /&gt;
The Creator Pattern does not have many information on the web at all. Most of the websites that we found, use the same approach and the same example for explaining the pattern. In addition to this most of the resources explaining creator pattern online are power point documents for some course's lecture notes which are prepared to be very brief. Here, we present the websites that are dealing with the Creator Pattern:&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/GRASP_(Object_Oriented_Design) &amp;quot;Wikipedia&amp;quot;] is one of the good places to read, to get a better understanding of what GRASP is, and what patterns and principles are included in GRASP. It also briefly explains the Creator Pattern, and how the pattern helps in making the decision that which class should create instances of another class. It provides no examples that illustrates this principle so it is not the best site for Creator Pattern online. &lt;br /&gt;
&lt;br /&gt;
[http://davidhayden.com/blog/dave/archive/2004/12/06/667.aspx &amp;quot;David Hayden&amp;quot;]'s blog on Creator Pattern explains the Creator Pattern briefly, and provides one simple example about how Creator pattern can play a role when adding a new DataRow to a DataTable class. &lt;br /&gt;
&lt;br /&gt;
[http://books.google.com/books?id=r8i-4En_aa4C&amp;amp;pg=PA228&amp;amp;lpg=PA228&amp;amp;dq=%22creator+pattern%22+example&amp;amp;source=web&amp;amp;ots=mT9HKWvlQX&amp;amp;sig=zsygR_-22hq9SfNOQLSiAaEExy8#PPA216,M1 &amp;quot;Craig Larmann&amp;quot;]'s book, Applying UML and Pattern: An Object-Oriented Analysis and Design and the Unified Process, is an excellent book that has a thorough explanation on Creator Pattern and other GRASPs. Some of its sections are available online through google-books. This book explains the Creator Pattern and presents an example of a system with Sale, SalesLineItem and ProductSpecification objects and it discusses how it uses Creator pattern to decide which class is responsible for creating new instances of SalesLineItem. Surprisingly, many of the sources listed here, use the example provided in this book for explaining creator pattern, so in our opinion, this is one of the best sources that one can read to learn and understand more about the Creator pattern since it explains it in whole lot more detail than other links provided. &lt;br /&gt;
&lt;br /&gt;
[http://www.augustana.ab.ca/~mohrj/courses/2003.fall/csc220/lecture_notes/responsibilities.html &amp;quot;Lecture Notes&amp;quot;] on GRASP from Augustana College describes the creator pattern briefly and gives the Sale example (which is originally from the book above), this website is a a good one that summarizes what is written in Craig Larmann's book, but it might not be the best place to start learning the Creator Pattern. &lt;br /&gt;
&lt;br /&gt;
[http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/pdf/CS4233%20Class%204.pdf &amp;quot;Lecture Notes&amp;quot;] on GRASP from Worcester Polytechnic Institute is the brief summary of what is explained on Creator Pattern in Craig Larmann's book.&lt;br /&gt;
&lt;br /&gt;
[http://www.soc.napier.ac.uk/module.php3?op=getresource&amp;amp;cloaking=no&amp;amp;resourceid=5938601 &amp;quot;Lecture Notes&amp;quot;] on GRASP from Napier University Edinburgh, also describes the pattern, and uses the Sale example. It also mentions briefly advantages of using this patterns and how it promotes low coupling. &lt;br /&gt;
&lt;br /&gt;
[http://www.cse.ucsd.edu/classes/fa06/cse111/lectures/Lecture%206%20%20Design%20Evaluation%20and%20Intro%20to%20OO%20Patterns.ppt &amp;quot;Lecture Notes&amp;quot;] on GRASP from University of California San Diego explains the terminology used in Creator Pattern (for example: what &amp;quot;aggregates&amp;quot; or &amp;quot;contains&amp;quot; means), it also provides a different example about DatingRequest but the slides are very brief and they  contain only the sequence diagrams of the system so it is not very clear what the example is about and how creator pattern is implemented in it. &lt;br /&gt;
&lt;br /&gt;
[http://faculty.inverhills.edu/dlevitt/CS%202000%20(FP)/GRASP%20Patterns.pdf &amp;quot;Lecture Notes&amp;quot;] on GRASP from Inverhills Community College summarizes the whole points of the Creator Pattern in one slide, and also mentions about the steps of applying the pattern to the system. This slide might be a nice summary of the pattern as a whole but it's not necessarily a good place to start learning the subject. &lt;br /&gt;
&lt;br /&gt;
[http://web.njit.edu/~gblank/cis683/Larman%20Chapter%2018.ppt &amp;quot;Lecture Notes&amp;quot;] on GRASP from New Jersey Institute of Technology explains the Sale example and how creator pattern is applied in detail, this slides are again the summary of Larmann's book is mentioned above, but they summarize the book in detail so one can understand the example by looking through the slides, without actually reading the book. &lt;br /&gt;
&lt;br /&gt;
[http://www.perisic.com/oosd/design/GRASP.ppt &amp;quot;Marc Conrad&amp;quot;]'s presentation has a brief discussion on Creator Pattern, also he presents a Deposit Item example which is an easy-to-understand example. &lt;br /&gt;
&lt;br /&gt;
[http://www.christmann.ws/ucis342/class7/class7.html &amp;quot;Paul Christmann&amp;quot;]'s lecture notes on GRASP pattern, also uses the example from the Larmann's book but the example is explained in detail and where the creator pattern is applied in the system is easy-to-understand.&lt;br /&gt;
&lt;br /&gt;
[http://www.academic.marist.edu/~jzbv/SoftwareDevelopment/GRASP.ppt &amp;quot;Lecture Notes&amp;quot;] from Marist College and [http://faculty.kutztown.edu/spiegel/CSc520/PowerPoint/10_GRASP_1.ppt &amp;quot;Lecture Notes&amp;quot;] from Kutztown University uses Monopoly game example for explaining the creator pattern, even though a person who knows about this pattern can understand what the example is trying to demonstrate, but the explanation of the example can be improved.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
* &amp;quot;Wikipedia&amp;quot; http://en.wikipedia.org/wiki/GRASP_(Object_Oriented_Design)&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;David Hayden&amp;quot; http://davidhayden.com/blog/dave/archive/2004/12/06/667.aspx &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Craig Larmann, Applying UML and Pattern: An Object-Oriented Analysis and Design and the Unified Process&amp;quot; http://books.google.com/books?id=r8i-4En_aa4C&amp;amp;pg=PA228&amp;amp;lpg=PA228&amp;amp;dq=%22creator+pattern%22+example&amp;amp;source=web&amp;amp;ots=mT9HKWvlQX&amp;amp;sig=zsygR_-22hq9SfNOQLSiAaEExy8#PPA216,M1 &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes on GRASP from Augustana College&amp;quot; http://www.augustana.ab.ca/~mohrj/courses/2003.fall/csc220/lecture_notes/responsibilities.html &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes on GRASP from Worcester Polytechnic Institute&amp;quot; http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/pdf/CS4233%20Class%204.pdf &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes on GRASP from Napier University Edinburgh&amp;quot; http://www.soc.napier.ac.uk/module.php3?op=getresource&amp;amp;cloaking=no&amp;amp;resourceid=5938601 &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes on GRASP from University of California San Diego&amp;quot; http://www.cse.ucsd.edu/classes/fa06/cse111/lectures/Lecture%206%20%20Design%20Evaluation%20and%20Intro%20to%20OO%20Patterns.ppt &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes on GRASP from Inverhills Community College&amp;quot; http://faculty.inverhills.edu/dlevitt/CS%202000%20(FP)/GRASP%20Patterns.pdf &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes on GRASP from New Jersey Institute of Technology&amp;quot; http://web.njit.edu/~gblank/cis683/Larman%20Chapter%2018.ppt &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Marc Conrad's presentation&amp;quot; http://www.perisic.com/oosd/design/GRASP.ppt&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Paul Christmann's notes&amp;quot; http://www.christmann.ws/ucis342/class7/class7.html &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes from Kutztown University&amp;quot; http://faculty.kutztown.edu/spiegel/CSc520/PowerPoint/10_GRASP_1.ppt&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes from Marist College&amp;quot; http://www.academic.marist.edu/~jzbv/SoftwareDevelopment/GRASP.ppt&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Patterns in Java&amp;quot; Vol 1 and Vol 2 - Mark Grand - Wiley Computer Publishing&lt;/div&gt;</summary>
		<author><name>Ndokuzo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=9989</id>
		<title>CSC/ECE 517 Fall 2007/wiki3 5 ns</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=9989"/>
		<updated>2007-11-28T15:24:05Z</updated>

		<summary type="html">&lt;p&gt;Ndokuzo: /* What is Factory Pattern? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''Take the Creator pattern and catalog the information on it available on the Web. Explain how it is different from the Factory pattern. Find good descriptions and good, concise, understandable examples. Tell which you consider the best to present to a class.''&lt;br /&gt;
=GRASP=&lt;br /&gt;
GRASP stands for '''G'''eneral '''R'''esponsibility '''A'''ssignment '''S'''oftware '''P'''atterns (or '''P'''rinciples), and they are the common object-oriented design patterns or principles that assign responsibility to classes and objects.&lt;br /&gt;
Some of GRASP includes Information Expert, Creator, Controller, Low Coupling, High Cohesion, Polymorphism, Pure Fabrication, Indirection, and Protected Variations.&lt;br /&gt;
&lt;br /&gt;
=What is Creator Pattern?=&lt;br /&gt;
Creator Pattern is one of the GRASP approaches, which is developed to find an answer to the question of &amp;quot;Who creates an object of class A?&amp;quot; in object-oriented systems. &lt;br /&gt;
Creator pattern suggests that&lt;br /&gt;
Class B should create an instance of Class A if&lt;br /&gt;
* B aggregates instances of A, or;&lt;br /&gt;
* B contains instances of A, or;&lt;br /&gt;
* B records instances of A, or;&lt;br /&gt;
* B closely uses instances of A, or;&lt;br /&gt;
* B has the necessary information for creating the new instance of A.&lt;br /&gt;
&lt;br /&gt;
=What is Factory Pattern?=&lt;br /&gt;
Factory pattern is one of the creational patterns which is used to answer the question &amp;quot;How should a class A instantiate one of the classes B,C,D but still be independent from them?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Factory pattern suggests the creation of a Factory class or a Factory method to which the responsibility of instantiating the object (one of the B,C,D classes) is delegated. This object instance is then returned to class A. For example, currently the factory method might be returning the instance of B, later the requirements might change and A needs to instantiate C. Then, the change in the code is only at the Factory method or Factory class. This ensures that the changes in requirements, require changes in minimum number of places throughout the code.&lt;br /&gt;
&lt;br /&gt;
=Creator Pattern vs Factory Pattern=&lt;br /&gt;
The subtle difference between the Creator and Factory pattern can be made out from the synopsis for both the patterns as put by Mark Grand in his book &amp;quot;Patterns in Java&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;Synopsis for Creator Pattern&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; ( one of the GRASP patterns )&lt;br /&gt;
&amp;quot; Creator pattern is used to determine which class should create instances of a class based on the relationship between potential creator classes and the class to be instantiated &amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;Synopsis for Factory Pattern&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; ( one of the Creational Patterns )&lt;br /&gt;
&amp;quot; In Factory pattern, a class is organized so that it can instantiate other classes without being dependent on any of the classes it instantiates.This reusable class is able to remain independent of the classes it instantiates by delegating the choice of which class to instantiate to another object and referring to the newly created object through a common interface&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Thus, the Creator Pattern gives us the guidelines for determining which class should be creating the instances of a particular class depending on the relationship between theses classes. The Factory Pattern provides guidelines to deal with the problem of creating objects without specifying the exact class of object that will be created.The factory method design pattern defines a separate method for creating the objects, which subclasses can then override to specify the derived type of product that will be created. More generally, the term factory method is often used to refer to any method whose main purpose is creation of objects.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;i&amp;gt;Advantages of Creator Pattern&amp;lt;/i&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
# The creator pattern promotes low coupling by making instances of a class responsible for creating objects they need to reference.&lt;br /&gt;
# The referencing class itself creates the objects of the classes it references and hence it avoids being dependent on another class to create objects for itself. &lt;br /&gt;
# By having the aggregate class create the child class, we ensure that the Information Expert, High Cohesion and Low coupling patterns also hold.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;i&amp;gt;Advantages of Factory Pattern&amp;lt;/i&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
# The creation requester class is independent of the class of concrete product objects actually created.&lt;br /&gt;
# The set of product classes that can be instantiated may change dynamically.&lt;br /&gt;
&lt;br /&gt;
From the advantages it might seem that Creator patterns contradicts what is proposed by the Factory Pattern. But the difference that needs to be noted is in the relationship between the classes.&lt;br /&gt;
&lt;br /&gt;
In Creator Pattern, the responsibility of object creation is given to the class itself ONLY IF the class aggregates the class of the object it creates. The Factory Pattern deals with the object creation by classes unrelated to the class of the object it instantiates.In this situation Factory Pattern suggests the delegation of the responsibility to another class or method.&lt;br /&gt;
''&lt;br /&gt;
&lt;br /&gt;
= Example for Creator Pattern =&lt;br /&gt;
The following example was one of the best examples that we saw while searching this topic. The resources found online are generally brief, and use the same example for describing creator pattern, thus we feel the intuitiveness in this example makes it a better option than the one in the web. So we propose this example as the ''best example for teaching Creator Pattern in class.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;i&amp;gt;Employee Time Keeping System &amp;lt;/i&amp;gt;&amp;lt;/u&amp;gt; ( from Mark Grand's book &amp;quot;Patterns in Java&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
This example is used to determine how many hours an employee works during a PayPeriod. During a PayPeriod an employee works for periods of time called Shifts. The system learns about shifts worked by an employee as it receives TimeKeepingEvents.&lt;br /&gt;
The classes used to represent this is shown in below Class Diagram:&lt;br /&gt;
&lt;br /&gt;
[[Image:wiki3.jpg]]&lt;br /&gt;
&lt;br /&gt;
From the diagram we can infer that instances of PayPeriod class compose instances of Shift class. Instances of Shift class compose instances of TimeKeepingEvents class. The subclasses of TimeKeepingEvents represent the time employee started a shift, started a break, ended a break and ended a shift.&lt;br /&gt;
&lt;br /&gt;
Here the problem is determining which classes are responsible for creating instances of Shift and TimeKeepingEvent classes... &lt;br /&gt;
&lt;br /&gt;
The Creator Pattern states that a class that composes or aggregates instances of another class in a good class to assign responsibility of creating instances of the composed or aggregated classes. &lt;br /&gt;
&lt;br /&gt;
By following the Creator pattern, creating instances of TimeKeepingEvent should be assigned to Shift class, and creating instances of Shift class should be assigned to PayPeriod.&lt;br /&gt;
&lt;br /&gt;
=Information Available on the Web=&lt;br /&gt;
The Creator Pattern does not have many information on the web at all. Most of the websites that we found, use the same approach and the same example for explaining the pattern. In addition to this most of the resources explaining creator pattern online are power point documents for some course's lecture notes which are prepared to be very brief. Here, we present the websites that are dealing with the Creator Pattern:&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/GRASP_(Object_Oriented_Design) &amp;quot;Wikipedia&amp;quot;] is one of the good places to read, to get a better understanding of what GRASP is, and what patterns and principles are included in GRASP. It also briefly explains the Creator Pattern, and how the pattern helps in making the decision that which class should create instances of another class. It provides no examples that illustrates this principle so it is not the best site for Creator Pattern online. &lt;br /&gt;
&lt;br /&gt;
[http://davidhayden.com/blog/dave/archive/2004/12/06/667.aspx &amp;quot;David Hayden&amp;quot;]'s blog on Creator Pattern explains the Creator Pattern briefly, and provides one simple example about how Creator pattern can play a role when adding a new DataRow to a DataTable class. &lt;br /&gt;
&lt;br /&gt;
[http://books.google.com/books?id=r8i-4En_aa4C&amp;amp;pg=PA228&amp;amp;lpg=PA228&amp;amp;dq=%22creator+pattern%22+example&amp;amp;source=web&amp;amp;ots=mT9HKWvlQX&amp;amp;sig=zsygR_-22hq9SfNOQLSiAaEExy8#PPA216,M1 &amp;quot;Craig Larmann&amp;quot;]'s book, Applying UML and Pattern: An Object-Oriented Analysis and Design and the Unified Process, is an excellent book that has a thorough explanation on Creator Pattern and other GRASPs. Some of its sections are available online through google-books. This book explains the Creator Pattern and presents an example of a system with Sale, SalesLineItem and ProductSpecification objects and it discusses how it uses Creator pattern to decide which class is responsible for creating new instances of SalesLineItem. Surprisingly, many of the sources listed here, use the example provided in this book for explaining creator pattern, so in our opinion, this is one of the best sources that one can read to learn and understand more about the Creator pattern since it explains it in whole lot more detail than other links provided. &lt;br /&gt;
&lt;br /&gt;
[http://www.augustana.ab.ca/~mohrj/courses/2003.fall/csc220/lecture_notes/responsibilities.html &amp;quot;Lecture Notes&amp;quot;] on GRASP from Augustana College describes the creator pattern briefly and gives the Sale example (which is originally from the book above), this website is a a good one that summarizes what is written in Craig Larmann's book, but it might not be the best place to start learning the Creator Pattern. &lt;br /&gt;
&lt;br /&gt;
[http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/pdf/CS4233%20Class%204.pdf &amp;quot;Lecture Notes&amp;quot;] on GRASP from Worcester Polytechnic Institute is the brief summary of what is explained on Creator Pattern in Craig Larmann's book.&lt;br /&gt;
&lt;br /&gt;
[http://www.soc.napier.ac.uk/module.php3?op=getresource&amp;amp;cloaking=no&amp;amp;resourceid=5938601 &amp;quot;Lecture Notes&amp;quot;] on GRASP from Napier University Edinburgh, also describes the pattern, and uses the Sale example. It also mentions briefly advantages of using this patterns and how it promotes low coupling. &lt;br /&gt;
&lt;br /&gt;
[http://www.cse.ucsd.edu/classes/fa06/cse111/lectures/Lecture%206%20%20Design%20Evaluation%20and%20Intro%20to%20OO%20Patterns.ppt &amp;quot;Lecture Notes&amp;quot;] on GRASP from University of California San Diego explains the terminology used in Creator Pattern (for example: what &amp;quot;aggregates&amp;quot; or &amp;quot;contains&amp;quot; means), it also provides a different example about DatingRequest but the slides are very brief and they  contain only the sequence diagrams of the system so it is not very clear what the example is about and how creator pattern is implemented in it. &lt;br /&gt;
&lt;br /&gt;
[http://faculty.inverhills.edu/dlevitt/CS%202000%20(FP)/GRASP%20Patterns.pdf &amp;quot;Lecture Notes&amp;quot;] on GRASP from Inverhills Community College summarizes the whole points of the Creator Pattern in one slide, and also mentions about the steps of applying the pattern to the system. This slide might be a nice summary of the pattern as a whole but it's not necessarily a good place to start learning the subject. &lt;br /&gt;
&lt;br /&gt;
[http://web.njit.edu/~gblank/cis683/Larman%20Chapter%2018.ppt &amp;quot;Lecture Notes&amp;quot;] on GRASP from New Jersey Institute of Technology explains the Sale example and how creator pattern is applied in detail, this slides are again the summary of Larmann's book is mentioned above, but they summarize the book in detail so one can understand the example by looking through the slides, without actually reading the book. &lt;br /&gt;
&lt;br /&gt;
[http://www.perisic.com/oosd/design/GRASP.ppt &amp;quot;Marc Conrad&amp;quot;]'s presentation has a brief discussion on Creator Pattern, also he presents a Deposit Item example which is an easy-to-understand example. &lt;br /&gt;
&lt;br /&gt;
[http://www.christmann.ws/ucis342/class7/class7.html &amp;quot;Paul Christmann&amp;quot;]'s lecture notes on GRASP pattern, also uses the example from the Larmann's book but the example is explained in detail and where the creator pattern is applied in the system is easy-to-understand.&lt;br /&gt;
&lt;br /&gt;
[http://www.academic.marist.edu/~jzbv/SoftwareDevelopment/GRASP.ppt &amp;quot;Lecture Notes&amp;quot;] from Marist College and [http://faculty.kutztown.edu/spiegel/CSc520/PowerPoint/10_GRASP_1.ppt &amp;quot;Lecture Notes&amp;quot;] from Kutztown University uses Monopoly game example for explaining the creator pattern, even though a person who knows about this pattern can understand what the example is trying to demonstrate, but the explanation of the example can be improved.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
* &amp;quot;Wikipedia&amp;quot; http://en.wikipedia.org/wiki/GRASP_(Object_Oriented_Design)&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;David Hayden&amp;quot; http://davidhayden.com/blog/dave/archive/2004/12/06/667.aspx &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Craig Larmann, Applying UML and Pattern: An Object-Oriented Analysis and Design and the Unified Process&amp;quot; http://books.google.com/books?id=r8i-4En_aa4C&amp;amp;pg=PA228&amp;amp;lpg=PA228&amp;amp;dq=%22creator+pattern%22+example&amp;amp;source=web&amp;amp;ots=mT9HKWvlQX&amp;amp;sig=zsygR_-22hq9SfNOQLSiAaEExy8#PPA216,M1 &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes on GRASP from Augustana College&amp;quot; http://www.augustana.ab.ca/~mohrj/courses/2003.fall/csc220/lecture_notes/responsibilities.html &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes on GRASP from Worcester Polytechnic Institute&amp;quot; http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/pdf/CS4233%20Class%204.pdf &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes on GRASP from Napier University Edinburgh&amp;quot; http://www.soc.napier.ac.uk/module.php3?op=getresource&amp;amp;cloaking=no&amp;amp;resourceid=5938601 &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes on GRASP from University of California San Diego&amp;quot; http://www.cse.ucsd.edu/classes/fa06/cse111/lectures/Lecture%206%20%20Design%20Evaluation%20and%20Intro%20to%20OO%20Patterns.ppt &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes on GRASP from Inverhills Community College&amp;quot; http://faculty.inverhills.edu/dlevitt/CS%202000%20(FP)/GRASP%20Patterns.pdf &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes on GRASP from New Jersey Institute of Technology&amp;quot; http://web.njit.edu/~gblank/cis683/Larman%20Chapter%2018.ppt &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Marc Conrad's presentation&amp;quot; http://www.perisic.com/oosd/design/GRASP.ppt&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Paul Christmann's notes&amp;quot; http://www.christmann.ws/ucis342/class7/class7.html &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes from Kutztown University&amp;quot; http://faculty.kutztown.edu/spiegel/CSc520/PowerPoint/10_GRASP_1.ppt&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes from Marist College&amp;quot; http://www.academic.marist.edu/~jzbv/SoftwareDevelopment/GRASP.ppt&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Patterns in Java&amp;quot; Vol 1 and Vol 2 - Mark Grand - Wiley Computer Publishing&lt;/div&gt;</summary>
		<author><name>Ndokuzo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=9924</id>
		<title>CSC/ECE 517 Fall 2007/wiki3 5 ns</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=9924"/>
		<updated>2007-11-27T20:08:16Z</updated>

		<summary type="html">&lt;p&gt;Ndokuzo: /* GRASP */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''Take the Creator pattern and catalog the information on it available on the Web. Explain how it is different from the Factory pattern. Find good descriptions and good, concise, understandable examples. Tell which you consider the best to present to a class.''&lt;br /&gt;
=GRASP=&lt;br /&gt;
GRASP stands for '''G'''eneral '''R'''esponsibility '''A'''ssignment '''S'''oftware '''P'''atterns (or '''P'''rinciples), and they are the common object-oriented design patterns or principles that assign responsibility to classes and objects.&lt;br /&gt;
Some of GRASP includes Information Expert, Creator, Controller, Low Coupling, High Cohesion, Polymorphism, Pure Fabrication, Indirection, and Protected Variations.&lt;br /&gt;
&lt;br /&gt;
=What is Creator Pattern?=&lt;br /&gt;
Creator Pattern is one of the GRASP approaches, which is developed to find an answer to the question of &amp;quot;Who creates an object of class A?&amp;quot; in object-oriented systems. &lt;br /&gt;
Creator pattern suggests that&lt;br /&gt;
Class B should create an instance of Class A if&lt;br /&gt;
* B aggregates instances of A, or;&lt;br /&gt;
* B contains instances of A, or;&lt;br /&gt;
* B records instances of A, or;&lt;br /&gt;
* B closely uses instances of A, or;&lt;br /&gt;
* B has the necessary information for creating the new instance of A.&lt;br /&gt;
&lt;br /&gt;
=What is Factory Pattern?=&lt;br /&gt;
Factory pattern is one of the creational patterns. This pattern is developed to answer the question &amp;quot;How should a class A  instantiate one of the classes B,C,D ,but still be independent of them? &amp;quot;&lt;br /&gt;
&lt;br /&gt;
Factory pattern suggests the creation of a Factory class or a Factory method to which the responsibility of instantiating the object (one of the B,C,D classes) is delegated. This object instance is then returned to class A. If currently the factory method is returning the instance of B class and some changes in requirements have needed for a instance of C class be returned, then the change in the code is only at the Factory method or Factory class. This ensures the changes when required are done at minimumnumber of places&lt;br /&gt;
&lt;br /&gt;
=Creator Pattern vs Factory Pattern=&lt;br /&gt;
The subtle difference between the Creator and Factory pattern can be made out from the synopsis for both the patterns as put by Mark Grand in his book &amp;quot;Patterns in Java&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;Synopsis for Creator Pattern&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; ( one of the GRASP patterns )&lt;br /&gt;
&amp;quot; Creator pattern is used to determine which class should create instances of a class based on the relationship between potential creator classes and the class to be instantiated &amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;Synopsis for Factory Pattern&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; ( one of the Creational Patterns )&lt;br /&gt;
&amp;quot; In Factory pattern, a class is organized so that it can instantiate other classes without being dependent on any of the classes it instantiates.This reusable class is able to remain independent of the classes it instantiates by delegating the choice of which class to instantiate to another object and referring to the newly created object through a common interface&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Thus, the Creator Pattern gives us the guidelines for determining which class should be creating the instances of a particular class depending on the relationship between theses classes. The Factory Pattern provides guidelines to deal with the problem of creating objects without specifying the exact class of object that will be created.The factory method design pattern defines a separate method for creating the objects, which subclasses can then override to specify the derived type of product that will be created. More generally, the term factory method is often used to refer to any method whose main purpose is creation of objects.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;i&amp;gt;Advantages of Creator Pattern&amp;lt;/i&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
# The creator pattern promotes low coupling by making instances of a class responsible for creating objects they need to reference.&lt;br /&gt;
# The referencing class itself creates the objects of the classes it references and hence it avoids being dependent on another class to create objects for itself. &lt;br /&gt;
# By having the aggregate class create the child class, we ensure that the Information Expert, High Cohesion and Low coupling patterns also hold.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;i&amp;gt;Advantages of Factory Pattern&amp;lt;/i&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
# The creation requester class is independent of the class of concrete product objects actually created.&lt;br /&gt;
# The set of product classes that can be instantiated may change dynamically.&lt;br /&gt;
&lt;br /&gt;
From the advantages it might seem that Creator patterns contradicts what is proposed by the Factory Pattern. But the difference that needs to be noted is in the relationship between the classes.&lt;br /&gt;
&lt;br /&gt;
In Creator Pattern, the responsibility of object creation is given to the class itself ONLY IF the class aggregates the class of the object it creates. The Factory Pattern deals with the object creation by classes unrelated to the class of the object it instantiates.In this situation Factory Pattern suggests the delegation of the responsibility to another class or method.&lt;br /&gt;
''&lt;br /&gt;
&lt;br /&gt;
= Example for Creator Pattern =&lt;br /&gt;
The following example was one of the best examples that we saw while searching this topic. The resources found online are generally brief, and use the same example for describing creator pattern, thus we feel the intuitiveness in this example makes it a better option than the one in the web. So we propose this example as the ''best example for teaching Creator Pattern in class.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;i&amp;gt;Employee Time Keeping System &amp;lt;/i&amp;gt;&amp;lt;/u&amp;gt; ( from Mark Grand's book &amp;quot;Patterns in Java&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
This example is used to determine how many hours an employee works during a PayPeriod. During a PayPeriod an employee works for periods of time called Shifts. The system learns about shifts worked by an employee as it receives TimeKeepingEvents.&lt;br /&gt;
The classes used to represent this is shown in below Class Diagram:&lt;br /&gt;
&lt;br /&gt;
[[Image:wiki3.jpg]]&lt;br /&gt;
&lt;br /&gt;
From the diagram we can infer that instances of PayPeriod class compose instances of Shift class. Instances of Shift class compose instances of TimeKeepingEvents class. The subclasses of TimeKeepingEvents represent the time employee started a shift, started a break, ended a break and ended a shift.&lt;br /&gt;
&lt;br /&gt;
Here the problem is determining which classes are responsible for creating instances of Shift and TimeKeepingEvent classes... &lt;br /&gt;
&lt;br /&gt;
The Creator Pattern states that a class that composes or aggregates instances of another class in a good class to assign responsibility of creating instances of the composed or aggregated classes. &lt;br /&gt;
&lt;br /&gt;
By following the Creator pattern, creating instances of TimeKeepingEvent should be assigned to Shift class, and creating instances of Shift class should be assigned to PayPeriod.&lt;br /&gt;
&lt;br /&gt;
=Information Available on the Web=&lt;br /&gt;
The Creator Pattern does not have many information on the web at all. Most of the websites that we found, use the same approach and the same example for explaining the pattern. In addition to this most of the resources explaining creator pattern online are power point documents for some course's lecture notes which are prepared to be very brief. Here, we present the websites that are dealing with the Creator Pattern:&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/GRASP_(Object_Oriented_Design) &amp;quot;Wikipedia&amp;quot;] is one of the good places to read, to get a better understanding of what GRASP is, and what patterns and principles are included in GRASP. It also briefly explains the Creator Pattern, and how the pattern helps in making the decision that which class should create instances of another class. It provides no examples that illustrates this principle so it is not the best site for Creator Pattern online. &lt;br /&gt;
&lt;br /&gt;
[http://davidhayden.com/blog/dave/archive/2004/12/06/667.aspx &amp;quot;David Hayden&amp;quot;]'s blog on Creator Pattern explains the Creator Pattern briefly, and provides one simple example about how Creator pattern can play a role when adding a new DataRow to a DataTable class. &lt;br /&gt;
&lt;br /&gt;
[http://books.google.com/books?id=r8i-4En_aa4C&amp;amp;pg=PA228&amp;amp;lpg=PA228&amp;amp;dq=%22creator+pattern%22+example&amp;amp;source=web&amp;amp;ots=mT9HKWvlQX&amp;amp;sig=zsygR_-22hq9SfNOQLSiAaEExy8#PPA216,M1 &amp;quot;Craig Larmann&amp;quot;]'s book, Applying UML and Pattern: An Object-Oriented Analysis and Design and the Unified Process, is an excellent book that has a thorough explanation on Creator Pattern and other GRASPs. Some of its sections are available online through google-books. This book explains the Creator Pattern and presents an example of a system with Sale, SalesLineItem and ProductSpecification objects and it discusses how it uses Creator pattern to decide which class is responsible for creating new instances of SalesLineItem. Surprisingly, many of the sources listed here, use the example provided in this book for explaining creator pattern, so in our opinion, this is one of the best sources that one can read to learn and understand more about the Creator pattern since it explains it in whole lot more detail than other links provided. &lt;br /&gt;
&lt;br /&gt;
[http://www.augustana.ab.ca/~mohrj/courses/2003.fall/csc220/lecture_notes/responsibilities.html &amp;quot;Lecture Notes&amp;quot;] on GRASP from Augustana College describes the creator pattern briefly and gives the Sale example (which is originally from the book above), this website is a a good one that summarizes what is written in Craig Larmann's book, but it might not be the best place to start learning the Creator Pattern. &lt;br /&gt;
&lt;br /&gt;
[http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/pdf/CS4233%20Class%204.pdf &amp;quot;Lecture Notes&amp;quot;] on GRASP from Worcester Polytechnic Institute is the brief summary of what is explained on Creator Pattern in Craig Larmann's book.&lt;br /&gt;
&lt;br /&gt;
[http://www.soc.napier.ac.uk/module.php3?op=getresource&amp;amp;cloaking=no&amp;amp;resourceid=5938601 &amp;quot;Lecture Notes&amp;quot;] on GRASP from Napier University Edinburgh, also describes the pattern, and uses the Sale example. It also mentions briefly advantages of using this patterns and how it promotes low coupling. &lt;br /&gt;
&lt;br /&gt;
[http://www.cse.ucsd.edu/classes/fa06/cse111/lectures/Lecture%206%20%20Design%20Evaluation%20and%20Intro%20to%20OO%20Patterns.ppt &amp;quot;Lecture Notes&amp;quot;] on GRASP from University of California San Diego explains the terminology used in Creator Pattern (for example: what &amp;quot;aggregates&amp;quot; or &amp;quot;contains&amp;quot; means), it also provides a different example about DatingRequest but the slides are very brief and they  contain only the sequence diagrams of the system so it is not very clear what the example is about and how creator pattern is implemented in it. &lt;br /&gt;
&lt;br /&gt;
[http://faculty.inverhills.edu/dlevitt/CS%202000%20(FP)/GRASP%20Patterns.pdf &amp;quot;Lecture Notes&amp;quot;] on GRASP from Inverhills Community College summarizes the whole points of the Creator Pattern in one slide, and also mentions about the steps of applying the pattern to the system. This slide might be a nice summary of the pattern as a whole but it's not necessarily a good place to start learning the subject. &lt;br /&gt;
&lt;br /&gt;
[http://web.njit.edu/~gblank/cis683/Larman%20Chapter%2018.ppt &amp;quot;Lecture Notes&amp;quot;] on GRASP from New Jersey Institute of Technology explains the Sale example and how creator pattern is applied in detail, this slides are again the summary of Larmann's book is mentioned above, but they summarize the book in detail so one can understand the example by looking through the slides, without actually reading the book. &lt;br /&gt;
&lt;br /&gt;
[http://www.perisic.com/oosd/design/GRASP.ppt &amp;quot;Marc Conrad&amp;quot;]'s presentation has a brief discussion on Creator Pattern, also he presents a Deposit Item example which is an easy-to-understand example. &lt;br /&gt;
&lt;br /&gt;
[http://www.christmann.ws/ucis342/class7/class7.html &amp;quot;Paul Christmann&amp;quot;]'s lecture notes on GRASP pattern, also uses the example from the Larmann's book but the example is explained in detail and where the creator pattern is applied in the system is easy-to-understand.&lt;br /&gt;
&lt;br /&gt;
[http://www.academic.marist.edu/~jzbv/SoftwareDevelopment/GRASP.ppt &amp;quot;Lecture Notes&amp;quot;] from Marist College and [http://faculty.kutztown.edu/spiegel/CSc520/PowerPoint/10_GRASP_1.ppt &amp;quot;Lecture Notes&amp;quot;] from Kutztown University uses Monopoly game example for explaining the creator pattern, even though a person who knows about this pattern can understand what the example is trying to demonstrate, but the explanation of the example can be improved.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
* &amp;quot;Wikipedia&amp;quot; http://en.wikipedia.org/wiki/GRASP_(Object_Oriented_Design)&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;David Hayden&amp;quot; http://davidhayden.com/blog/dave/archive/2004/12/06/667.aspx &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Craig Larmann, Applying UML and Pattern: An Object-Oriented Analysis and Design and the Unified Process&amp;quot; http://books.google.com/books?id=r8i-4En_aa4C&amp;amp;pg=PA228&amp;amp;lpg=PA228&amp;amp;dq=%22creator+pattern%22+example&amp;amp;source=web&amp;amp;ots=mT9HKWvlQX&amp;amp;sig=zsygR_-22hq9SfNOQLSiAaEExy8#PPA216,M1 &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes on GRASP from Augustana College&amp;quot; http://www.augustana.ab.ca/~mohrj/courses/2003.fall/csc220/lecture_notes/responsibilities.html &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes on GRASP from Worcester Polytechnic Institute&amp;quot; http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/pdf/CS4233%20Class%204.pdf &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes on GRASP from Napier University Edinburgh&amp;quot; http://www.soc.napier.ac.uk/module.php3?op=getresource&amp;amp;cloaking=no&amp;amp;resourceid=5938601 &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes on GRASP from University of California San Diego&amp;quot; http://www.cse.ucsd.edu/classes/fa06/cse111/lectures/Lecture%206%20%20Design%20Evaluation%20and%20Intro%20to%20OO%20Patterns.ppt &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes on GRASP from Inverhills Community College&amp;quot; http://faculty.inverhills.edu/dlevitt/CS%202000%20(FP)/GRASP%20Patterns.pdf &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes on GRASP from New Jersey Institute of Technology&amp;quot; http://web.njit.edu/~gblank/cis683/Larman%20Chapter%2018.ppt &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Marc Conrad's presentation&amp;quot; http://www.perisic.com/oosd/design/GRASP.ppt&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Paul Christmann's notes&amp;quot; http://www.christmann.ws/ucis342/class7/class7.html &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes from Kutztown University&amp;quot; http://faculty.kutztown.edu/spiegel/CSc520/PowerPoint/10_GRASP_1.ppt&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes from Marist College&amp;quot; http://www.academic.marist.edu/~jzbv/SoftwareDevelopment/GRASP.ppt&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Patterns in Java&amp;quot; Vol 1 and Vol 2 - Mark Grand - Wiley Computer Publishing&lt;/div&gt;</summary>
		<author><name>Ndokuzo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=9923</id>
		<title>CSC/ECE 517 Fall 2007/wiki3 5 ns</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=9923"/>
		<updated>2007-11-27T20:05:02Z</updated>

		<summary type="html">&lt;p&gt;Ndokuzo: /* Information Available on the Web */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''Take the Creator pattern and catalog the information on it available on the Web. Explain how it is different from the Factory pattern. Find good descriptions and good, concise, understandable examples. Tell which you consider the best to present to a class.''&lt;br /&gt;
=GRASP=&lt;br /&gt;
GRASP stands for '''G'''eneral '''R'''esponsibility '''A'''ssignment '''S'''oftware '''P'''atterns (or '''P'''rinciples), and they are the common object-oriented design patterns or principles that assign responsibility to classes and objects.&lt;br /&gt;
Some of GRASP includes Information Expert, Creator, Controller, Low Coupling, High Cohesion, Polymorphism, Pure Fabrication, Indirection and Protected Variations.&lt;br /&gt;
&lt;br /&gt;
=What is Creator Pattern?=&lt;br /&gt;
Creator Pattern is one of the GRASP approaches, which is developed to find an answer to the question of &amp;quot;Who creates an object of class A?&amp;quot; in object-oriented systems. &lt;br /&gt;
Creator pattern suggests that&lt;br /&gt;
Class B should create an instance of Class A if&lt;br /&gt;
* B aggregates instances of A, or;&lt;br /&gt;
* B contains instances of A, or;&lt;br /&gt;
* B records instances of A, or;&lt;br /&gt;
* B closely uses instances of A, or;&lt;br /&gt;
* B has the necessary information for creating the new instance of A.&lt;br /&gt;
&lt;br /&gt;
=What is Factory Pattern?=&lt;br /&gt;
Factory pattern is one of the creational patterns. This pattern is developed to answer the question &amp;quot;How should a class A  instantiate one of the classes B,C,D ,but still be independent of them? &amp;quot;&lt;br /&gt;
&lt;br /&gt;
Factory pattern suggests the creation of a Factory class or a Factory method to which the responsibility of instantiating the object (one of the B,C,D classes) is delegated. This object instance is then returned to class A. If currently the factory method is returning the instance of B class and some changes in requirements have needed for a instance of C class be returned, then the change in the code is only at the Factory method or Factory class. This ensures the changes when required are done at minimumnumber of places&lt;br /&gt;
&lt;br /&gt;
=Creator Pattern vs Factory Pattern=&lt;br /&gt;
The subtle difference between the Creator and Factory pattern can be made out from the synopsis for both the patterns as put by Mark Grand in his book &amp;quot;Patterns in Java&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;Synopsis for Creator Pattern&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; ( one of the GRASP patterns )&lt;br /&gt;
&amp;quot; Creator pattern is used to determine which class should create instances of a class based on the relationship between potential creator classes and the class to be instantiated &amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;Synopsis for Factory Pattern&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; ( one of the Creational Patterns )&lt;br /&gt;
&amp;quot; In Factory pattern, a class is organized so that it can instantiate other classes without being dependent on any of the classes it instantiates.This reusable class is able to remain independent of the classes it instantiates by delegating the choice of which class to instantiate to another object and referring to the newly created object through a common interface&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Thus, the Creator Pattern gives us the guidelines for determining which class should be creating the instances of a particular class depending on the relationship between theses classes. The Factory Pattern provides guidelines to deal with the problem of creating objects without specifying the exact class of object that will be created.The factory method design pattern defines a separate method for creating the objects, which subclasses can then override to specify the derived type of product that will be created. More generally, the term factory method is often used to refer to any method whose main purpose is creation of objects.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;i&amp;gt;Advantages of Creator Pattern&amp;lt;/i&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
# The creator pattern promotes low coupling by making instances of a class responsible for creating objects they need to reference.&lt;br /&gt;
# The referencing class itself creates the objects of the classes it references and hence it avoids being dependent on another class to create objects for itself. &lt;br /&gt;
# By having the aggregate class create the child class, we ensure that the Information Expert, High Cohesion and Low coupling patterns also hold.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;i&amp;gt;Advantages of Factory Pattern&amp;lt;/i&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
# The creation requester class is independent of the class of concrete product objects actually created.&lt;br /&gt;
# The set of product classes that can be instantiated may change dynamically.&lt;br /&gt;
&lt;br /&gt;
From the advantages it might seem that Creator patterns contradicts what is proposed by the Factory Pattern. But the difference that needs to be noted is in the relationship between the classes.&lt;br /&gt;
&lt;br /&gt;
In Creator Pattern, the responsibility of object creation is given to the class itself ONLY IF the class aggregates the class of the object it creates. The Factory Pattern deals with the object creation by classes unrelated to the class of the object it instantiates.In this situation Factory Pattern suggests the delegation of the responsibility to another class or method.&lt;br /&gt;
''&lt;br /&gt;
&lt;br /&gt;
= Example for Creator Pattern =&lt;br /&gt;
The following example was one of the best examples that we saw while searching this topic. The resources found online are generally brief, and use the same example for describing creator pattern, thus we feel the intuitiveness in this example makes it a better option than the one in the web. So we propose this example as the ''best example for teaching Creator Pattern in class.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;i&amp;gt;Employee Time Keeping System &amp;lt;/i&amp;gt;&amp;lt;/u&amp;gt; ( from Mark Grand's book &amp;quot;Patterns in Java&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
This example is used to determine how many hours an employee works during a PayPeriod. During a PayPeriod an employee works for periods of time called Shifts. The system learns about shifts worked by an employee as it receives TimeKeepingEvents.&lt;br /&gt;
The classes used to represent this is shown in below Class Diagram:&lt;br /&gt;
&lt;br /&gt;
[[Image:wiki3.jpg]]&lt;br /&gt;
&lt;br /&gt;
From the diagram we can infer that instances of PayPeriod class compose instances of Shift class. Instances of Shift class compose instances of TimeKeepingEvents class. The subclasses of TimeKeepingEvents represent the time employee started a shift, started a break, ended a break and ended a shift.&lt;br /&gt;
&lt;br /&gt;
Here the problem is determining which classes are responsible for creating instances of Shift and TimeKeepingEvent classes... &lt;br /&gt;
&lt;br /&gt;
The Creator Pattern states that a class that composes or aggregates instances of another class in a good class to assign responsibility of creating instances of the composed or aggregated classes. &lt;br /&gt;
&lt;br /&gt;
By following the Creator pattern, creating instances of TimeKeepingEvent should be assigned to Shift class, and creating instances of Shift class should be assigned to PayPeriod.&lt;br /&gt;
&lt;br /&gt;
=Information Available on the Web=&lt;br /&gt;
The Creator Pattern does not have many information on the web at all. Most of the websites that we found, use the same approach and the same example for explaining the pattern. In addition to this most of the resources explaining creator pattern online are power point documents for some course's lecture notes which are prepared to be very brief. Here, we present the websites that are dealing with the Creator Pattern:&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/GRASP_(Object_Oriented_Design) &amp;quot;Wikipedia&amp;quot;] is one of the good places to read, to get a better understanding of what GRASP is, and what patterns and principles are included in GRASP. It also briefly explains the Creator Pattern, and how the pattern helps in making the decision that which class should create instances of another class. It provides no examples that illustrates this principle so it is not the best site for Creator Pattern online. &lt;br /&gt;
&lt;br /&gt;
[http://davidhayden.com/blog/dave/archive/2004/12/06/667.aspx &amp;quot;David Hayden&amp;quot;]'s blog on Creator Pattern explains the Creator Pattern briefly, and provides one simple example about how Creator pattern can play a role when adding a new DataRow to a DataTable class. &lt;br /&gt;
&lt;br /&gt;
[http://books.google.com/books?id=r8i-4En_aa4C&amp;amp;pg=PA228&amp;amp;lpg=PA228&amp;amp;dq=%22creator+pattern%22+example&amp;amp;source=web&amp;amp;ots=mT9HKWvlQX&amp;amp;sig=zsygR_-22hq9SfNOQLSiAaEExy8#PPA216,M1 &amp;quot;Craig Larmann&amp;quot;]'s book, Applying UML and Pattern: An Object-Oriented Analysis and Design and the Unified Process, is an excellent book that has a thorough explanation on Creator Pattern and other GRASPs. Some of its sections are available online through google-books. This book explains the Creator Pattern and presents an example of a system with Sale, SalesLineItem and ProductSpecification objects and it discusses how it uses Creator pattern to decide which class is responsible for creating new instances of SalesLineItem. Surprisingly, many of the sources listed here, use the example provided in this book for explaining creator pattern, so in our opinion, this is one of the best sources that one can read to learn and understand more about the Creator pattern since it explains it in whole lot more detail than other links provided. &lt;br /&gt;
&lt;br /&gt;
[http://www.augustana.ab.ca/~mohrj/courses/2003.fall/csc220/lecture_notes/responsibilities.html &amp;quot;Lecture Notes&amp;quot;] on GRASP from Augustana College describes the creator pattern briefly and gives the Sale example (which is originally from the book above), this website is a a good one that summarizes what is written in Craig Larmann's book, but it might not be the best place to start learning the Creator Pattern. &lt;br /&gt;
&lt;br /&gt;
[http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/pdf/CS4233%20Class%204.pdf &amp;quot;Lecture Notes&amp;quot;] on GRASP from Worcester Polytechnic Institute is the brief summary of what is explained on Creator Pattern in Craig Larmann's book.&lt;br /&gt;
&lt;br /&gt;
[http://www.soc.napier.ac.uk/module.php3?op=getresource&amp;amp;cloaking=no&amp;amp;resourceid=5938601 &amp;quot;Lecture Notes&amp;quot;] on GRASP from Napier University Edinburgh, also describes the pattern, and uses the Sale example. It also mentions briefly advantages of using this patterns and how it promotes low coupling. &lt;br /&gt;
&lt;br /&gt;
[http://www.cse.ucsd.edu/classes/fa06/cse111/lectures/Lecture%206%20%20Design%20Evaluation%20and%20Intro%20to%20OO%20Patterns.ppt &amp;quot;Lecture Notes&amp;quot;] on GRASP from University of California San Diego explains the terminology used in Creator Pattern (for example: what &amp;quot;aggregates&amp;quot; or &amp;quot;contains&amp;quot; means), it also provides a different example about DatingRequest but the slides are very brief and they  contain only the sequence diagrams of the system so it is not very clear what the example is about and how creator pattern is implemented in it. &lt;br /&gt;
&lt;br /&gt;
[http://faculty.inverhills.edu/dlevitt/CS%202000%20(FP)/GRASP%20Patterns.pdf &amp;quot;Lecture Notes&amp;quot;] on GRASP from Inverhills Community College summarizes the whole points of the Creator Pattern in one slide, and also mentions about the steps of applying the pattern to the system. This slide might be a nice summary of the pattern as a whole but it's not necessarily a good place to start learning the subject. &lt;br /&gt;
&lt;br /&gt;
[http://web.njit.edu/~gblank/cis683/Larman%20Chapter%2018.ppt &amp;quot;Lecture Notes&amp;quot;] on GRASP from New Jersey Institute of Technology explains the Sale example and how creator pattern is applied in detail, this slides are again the summary of Larmann's book is mentioned above, but they summarize the book in detail so one can understand the example by looking through the slides, without actually reading the book. &lt;br /&gt;
&lt;br /&gt;
[http://www.perisic.com/oosd/design/GRASP.ppt &amp;quot;Marc Conrad&amp;quot;]'s presentation has a brief discussion on Creator Pattern, also he presents a Deposit Item example which is an easy-to-understand example. &lt;br /&gt;
&lt;br /&gt;
[http://www.christmann.ws/ucis342/class7/class7.html &amp;quot;Paul Christmann&amp;quot;]'s lecture notes on GRASP pattern, also uses the example from the Larmann's book but the example is explained in detail and where the creator pattern is applied in the system is easy-to-understand.&lt;br /&gt;
&lt;br /&gt;
[http://www.academic.marist.edu/~jzbv/SoftwareDevelopment/GRASP.ppt &amp;quot;Lecture Notes&amp;quot;] from Marist College and [http://faculty.kutztown.edu/spiegel/CSc520/PowerPoint/10_GRASP_1.ppt &amp;quot;Lecture Notes&amp;quot;] from Kutztown University uses Monopoly game example for explaining the creator pattern, even though a person who knows about this pattern can understand what the example is trying to demonstrate, but the explanation of the example can be improved.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
* &amp;quot;Wikipedia&amp;quot; http://en.wikipedia.org/wiki/GRASP_(Object_Oriented_Design)&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;David Hayden&amp;quot; http://davidhayden.com/blog/dave/archive/2004/12/06/667.aspx &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Craig Larmann, Applying UML and Pattern: An Object-Oriented Analysis and Design and the Unified Process&amp;quot; http://books.google.com/books?id=r8i-4En_aa4C&amp;amp;pg=PA228&amp;amp;lpg=PA228&amp;amp;dq=%22creator+pattern%22+example&amp;amp;source=web&amp;amp;ots=mT9HKWvlQX&amp;amp;sig=zsygR_-22hq9SfNOQLSiAaEExy8#PPA216,M1 &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes on GRASP from Augustana College&amp;quot; http://www.augustana.ab.ca/~mohrj/courses/2003.fall/csc220/lecture_notes/responsibilities.html &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes on GRASP from Worcester Polytechnic Institute&amp;quot; http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/pdf/CS4233%20Class%204.pdf &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes on GRASP from Napier University Edinburgh&amp;quot; http://www.soc.napier.ac.uk/module.php3?op=getresource&amp;amp;cloaking=no&amp;amp;resourceid=5938601 &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes on GRASP from University of California San Diego&amp;quot; http://www.cse.ucsd.edu/classes/fa06/cse111/lectures/Lecture%206%20%20Design%20Evaluation%20and%20Intro%20to%20OO%20Patterns.ppt &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes on GRASP from Inverhills Community College&amp;quot; http://faculty.inverhills.edu/dlevitt/CS%202000%20(FP)/GRASP%20Patterns.pdf &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes on GRASP from New Jersey Institute of Technology&amp;quot; http://web.njit.edu/~gblank/cis683/Larman%20Chapter%2018.ppt &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Marc Conrad's presentation&amp;quot; http://www.perisic.com/oosd/design/GRASP.ppt&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Paul Christmann's notes&amp;quot; http://www.christmann.ws/ucis342/class7/class7.html &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes from Kutztown University&amp;quot; http://faculty.kutztown.edu/spiegel/CSc520/PowerPoint/10_GRASP_1.ppt&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes from Marist College&amp;quot; http://www.academic.marist.edu/~jzbv/SoftwareDevelopment/GRASP.ppt&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Patterns in Java&amp;quot; Vol 1 and Vol 2 - Mark Grand - Wiley Computer Publishing&lt;/div&gt;</summary>
		<author><name>Ndokuzo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=9922</id>
		<title>CSC/ECE 517 Fall 2007/wiki3 5 ns</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=9922"/>
		<updated>2007-11-27T20:02:43Z</updated>

		<summary type="html">&lt;p&gt;Ndokuzo: /* Information Available on the Web */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''Take the Creator pattern and catalog the information on it available on the Web. Explain how it is different from the Factory pattern. Find good descriptions and good, concise, understandable examples. Tell which you consider the best to present to a class.''&lt;br /&gt;
=GRASP=&lt;br /&gt;
GRASP stands for '''G'''eneral '''R'''esponsibility '''A'''ssignment '''S'''oftware '''P'''atterns (or '''P'''rinciples), and they are the common object-oriented design patterns or principles that assign responsibility to classes and objects.&lt;br /&gt;
Some of GRASP includes Information Expert, Creator, Controller, Low Coupling, High Cohesion, Polymorphism, Pure Fabrication, Indirection and Protected Variations.&lt;br /&gt;
&lt;br /&gt;
=What is Creator Pattern?=&lt;br /&gt;
Creator Pattern is one of the GRASP approaches, which is developed to find an answer to the question of &amp;quot;Who creates an object of class A?&amp;quot; in object-oriented systems. &lt;br /&gt;
Creator pattern suggests that&lt;br /&gt;
Class B should create an instance of Class A if&lt;br /&gt;
* B aggregates instances of A, or;&lt;br /&gt;
* B contains instances of A, or;&lt;br /&gt;
* B records instances of A, or;&lt;br /&gt;
* B closely uses instances of A, or;&lt;br /&gt;
* B has the necessary information for creating the new instance of A.&lt;br /&gt;
&lt;br /&gt;
=What is Factory Pattern?=&lt;br /&gt;
Factory pattern is one of the creational patterns. This pattern is developed to answer the question &amp;quot;How should a class A  instantiate one of the classes B,C,D ,but still be independent of them? &amp;quot;&lt;br /&gt;
&lt;br /&gt;
Factory pattern suggests the creation of a Factory class or a Factory method to which the responsibility of instantiating the object (one of the B,C,D classes) is delegated. This object instance is then returned to class A. If currently the factory method is returning the instance of B class and some changes in requirements have needed for a instance of C class be returned, then the change in the code is only at the Factory method or Factory class. This ensures the changes when required are done at minimumnumber of places&lt;br /&gt;
&lt;br /&gt;
=Creator Pattern vs Factory Pattern=&lt;br /&gt;
The subtle difference between the Creator and Factory pattern can be made out from the synopsis for both the patterns as put by Mark Grand in his book &amp;quot;Patterns in Java&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;Synopsis for Creator Pattern&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; ( one of the GRASP patterns )&lt;br /&gt;
&amp;quot; Creator pattern is used to determine which class should create instances of a class based on the relationship between potential creator classes and the class to be instantiated &amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;Synopsis for Factory Pattern&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; ( one of the Creational Patterns )&lt;br /&gt;
&amp;quot; In Factory pattern, a class is organized so that it can instantiate other classes without being dependent on any of the classes it instantiates.This reusable class is able to remain independent of the classes it instantiates by delegating the choice of which class to instantiate to another object and referring to the newly created object through a common interface&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Thus, the Creator Pattern gives us the guidelines for determining which class should be creating the instances of a particular class depending on the relationship between theses classes. The Factory Pattern provides guidelines to deal with the problem of creating objects without specifying the exact class of object that will be created.The factory method design pattern defines a separate method for creating the objects, which subclasses can then override to specify the derived type of product that will be created. More generally, the term factory method is often used to refer to any method whose main purpose is creation of objects.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;i&amp;gt;Advantages of Creator Pattern&amp;lt;/i&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
# The creator pattern promotes low coupling by making instances of a class responsible for creating objects they need to reference.&lt;br /&gt;
# The referencing class itself creates the objects of the classes it references and hence it avoids being dependent on another class to create objects for itself. &lt;br /&gt;
# By having the aggregate class create the child class, we ensure that the Information Expert, High Cohesion and Low coupling patterns also hold.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;i&amp;gt;Advantages of Factory Pattern&amp;lt;/i&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
# The creation requester class is independent of the class of concrete product objects actually created.&lt;br /&gt;
# The set of product classes that can be instantiated may change dynamically.&lt;br /&gt;
&lt;br /&gt;
From the advantages it might seem that Creator patterns contradicts what is proposed by the Factory Pattern. But the difference that needs to be noted is in the relationship between the classes.&lt;br /&gt;
&lt;br /&gt;
In Creator Pattern, the responsibility of object creation is given to the class itself ONLY IF the class aggregates the class of the object it creates. The Factory Pattern deals with the object creation by classes unrelated to the class of the object it instantiates.In this situation Factory Pattern suggests the delegation of the responsibility to another class or method.&lt;br /&gt;
''&lt;br /&gt;
&lt;br /&gt;
= Example for Creator Pattern =&lt;br /&gt;
The following example was one of the best examples that we saw while searching this topic. The resources found online are generally brief, and use the same example for describing creator pattern, thus we feel the intuitiveness in this example makes it a better option than the one in the web. So we propose this example as the ''best example for teaching Creator Pattern in class.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;i&amp;gt;Employee Time Keeping System &amp;lt;/i&amp;gt;&amp;lt;/u&amp;gt; ( from Mark Grand's book &amp;quot;Patterns in Java&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
This example is used to determine how many hours an employee works during a PayPeriod. During a PayPeriod an employee works for periods of time called Shifts. The system learns about shifts worked by an employee as it receives TimeKeepingEvents.&lt;br /&gt;
The classes used to represent this is shown in below Class Diagram:&lt;br /&gt;
&lt;br /&gt;
[[Image:wiki3.jpg]]&lt;br /&gt;
&lt;br /&gt;
From the diagram we can infer that instances of PayPeriod class compose instances of Shift class. Instances of Shift class compose instances of TimeKeepingEvents class. The subclasses of TimeKeepingEvents represent the time employee started a shift, started a break, ended a break and ended a shift.&lt;br /&gt;
&lt;br /&gt;
Here the problem is determining which classes are responsible for creating instances of Shift and TimeKeepingEvent classes... &lt;br /&gt;
&lt;br /&gt;
The Creator Pattern states that a class that composes or aggregates instances of another class in a good class to assign responsibility of creating instances of the composed or aggregated classes. &lt;br /&gt;
&lt;br /&gt;
By following the Creator pattern, creating instances of TimeKeepingEvent should be assigned to Shift class, and creating instances of Shift class should be assigned to PayPeriod.&lt;br /&gt;
&lt;br /&gt;
=Information Available on the Web=&lt;br /&gt;
The Creator Pattern does not have many information on the web at all. Most of the websites that we found, use the same approach and the same example for explaining the pattern. In addition to this most of the resources explaining creator pattern online are power point documents for some course's lecture notes which are prepared to be very brief. Here, we present the websites that are dealing with the Creator Pattern:&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/GRASP_(Object_Oriented_Design) &amp;quot;Wikipedia&amp;quot;] is one of the good places to read, to get a better understanding of what GRASP is, and what patterns and principles are included in GRASP. It also briefly explains the Creator Pattern, and how the pattern helps in making the decision that which class should create instances of another class. It provides no examples that illustrates this principle so it is not the best site for Creator Pattern online. &lt;br /&gt;
&lt;br /&gt;
[http://davidhayden.com/blog/dave/archive/2004/12/06/667.aspx &amp;quot;David Hayden&amp;quot;]'s blog on Creator Pattern explains the Creator Pattern briefly, and provides one simple example about how Creator pattern can play a role when adding a new DataRow to a DataTable class. &lt;br /&gt;
&lt;br /&gt;
[http://books.google.com/books?id=r8i-4En_aa4C&amp;amp;pg=PA228&amp;amp;lpg=PA228&amp;amp;dq=%22creator+pattern%22+example&amp;amp;source=web&amp;amp;ots=mT9HKWvlQX&amp;amp;sig=zsygR_-22hq9SfNOQLSiAaEExy8#PPA216,M1 &amp;quot;Craig Larmann&amp;quot;]'s book, Applying UML and Pattern: An Object-Oriented Analysis and Design and the Unified Process, is an excellent book that has a thorough explanation on Creator Pattern and other GRASPs. Some of its sections are available online through google-books. This book explains the Creator Pattern and presents an example of a system with Sale, SalesLineItem and ProductSpecification objects and it discusses how it uses Creator pattern to decide which class is responsible for creating new instances of SalesLineItem. Surprisingly, many of the sources that found online (most of them are lecture notes on object oriented design from different universities), use the example provided in this book for explaining creator pattern, so in our opinion, this is one of the best sources that one can read to learn and understand more about the Creator pattern. &lt;br /&gt;
&lt;br /&gt;
[http://www.augustana.ab.ca/~mohrj/courses/2003.fall/csc220/lecture_notes/responsibilities.html &amp;quot;Lecture Notes&amp;quot;] on GRASP from Augustana College describes the creator pattern briefly and gives the Sale example (which is originally from the book above), this website is a a good one that summarizes what is written in Craig Larmann's book, but it might not be the best place to start learning the Creator Pattern. &lt;br /&gt;
&lt;br /&gt;
[http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/pdf/CS4233%20Class%204.pdf &amp;quot;Lecture Notes&amp;quot;] on GRASP from Worcester Polytechnic Institute is the brief summary of what is explained on Creator Pattern in Craig Larmann's book.&lt;br /&gt;
&lt;br /&gt;
[http://www.soc.napier.ac.uk/module.php3?op=getresource&amp;amp;cloaking=no&amp;amp;resourceid=5938601 &amp;quot;Lecture Notes&amp;quot;] on GRASP from Napier University Edinburgh, also describes the pattern, and uses the Sale example. It also mentions briefly advantages of using this patterns and how it promotes low coupling. &lt;br /&gt;
&lt;br /&gt;
[http://www.cse.ucsd.edu/classes/fa06/cse111/lectures/Lecture%206%20%20Design%20Evaluation%20and%20Intro%20to%20OO%20Patterns.ppt &amp;quot;Lecture Notes&amp;quot;] on GRASP from University of California San Diego explains the terminology used in Creator Pattern (for example: what &amp;quot;aggregates&amp;quot; or &amp;quot;contains&amp;quot; means), it also provides a different example about DatingRequest but the slides are very brief and they  contain only the sequence diagrams of the system so it is not very clear what the example is about and how creator pattern is implemented in it. &lt;br /&gt;
&lt;br /&gt;
[http://faculty.inverhills.edu/dlevitt/CS%202000%20(FP)/GRASP%20Patterns.pdf &amp;quot;Lecture Notes&amp;quot;] on GRASP from Inverhills Community College summarizes the whole points of the Creator Pattern in one slide, and also mentions about the steps of applying the pattern to the system. This slide might be a nice summary of the pattern as a whole but it's not necessarily a good place to start learning the subject. &lt;br /&gt;
&lt;br /&gt;
[http://web.njit.edu/~gblank/cis683/Larman%20Chapter%2018.ppt &amp;quot;Lecture Notes&amp;quot;] on GRASP from New Jersey Institute of Technology explains the Sale example and how creator pattern is applied in detail, this slides are again the summary of Larmann's book is mentioned above, but they summarize the book in detail so one can understand the example by looking through the slides, without actually reading the book. &lt;br /&gt;
&lt;br /&gt;
[http://www.perisic.com/oosd/design/GRASP.ppt &amp;quot;Marc Conrad&amp;quot;]'s presentation has a brief discussion on Creator Pattern, also he presents a Deposit Item example which is an easy-to-understand example. &lt;br /&gt;
&lt;br /&gt;
[http://www.christmann.ws/ucis342/class7/class7.html &amp;quot;Paul Christmann&amp;quot;]'s lecture notes on GRASP pattern, also uses the example from the Larmann's book but the example is explained in detail and where the creator pattern is applied in the system is easy-to-understand.&lt;br /&gt;
&lt;br /&gt;
[http://www.academic.marist.edu/~jzbv/SoftwareDevelopment/GRASP.ppt &amp;quot;Lecture Notes&amp;quot;] from Marist College and [http://faculty.kutztown.edu/spiegel/CSc520/PowerPoint/10_GRASP_1.ppt &amp;quot;Lecture Notes&amp;quot;] from Kutztown University uses Monopoly game example for explaining the creator pattern, even though a person who knows about this pattern can understand what the example is trying to demonstrate, but the explanation of the example can be improved.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
* &amp;quot;Wikipedia&amp;quot; http://en.wikipedia.org/wiki/GRASP_(Object_Oriented_Design)&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;David Hayden&amp;quot; http://davidhayden.com/blog/dave/archive/2004/12/06/667.aspx &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Craig Larmann, Applying UML and Pattern: An Object-Oriented Analysis and Design and the Unified Process&amp;quot; http://books.google.com/books?id=r8i-4En_aa4C&amp;amp;pg=PA228&amp;amp;lpg=PA228&amp;amp;dq=%22creator+pattern%22+example&amp;amp;source=web&amp;amp;ots=mT9HKWvlQX&amp;amp;sig=zsygR_-22hq9SfNOQLSiAaEExy8#PPA216,M1 &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes on GRASP from Augustana College&amp;quot; http://www.augustana.ab.ca/~mohrj/courses/2003.fall/csc220/lecture_notes/responsibilities.html &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes on GRASP from Worcester Polytechnic Institute&amp;quot; http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/pdf/CS4233%20Class%204.pdf &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes on GRASP from Napier University Edinburgh&amp;quot; http://www.soc.napier.ac.uk/module.php3?op=getresource&amp;amp;cloaking=no&amp;amp;resourceid=5938601 &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes on GRASP from University of California San Diego&amp;quot; http://www.cse.ucsd.edu/classes/fa06/cse111/lectures/Lecture%206%20%20Design%20Evaluation%20and%20Intro%20to%20OO%20Patterns.ppt &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes on GRASP from Inverhills Community College&amp;quot; http://faculty.inverhills.edu/dlevitt/CS%202000%20(FP)/GRASP%20Patterns.pdf &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes on GRASP from New Jersey Institute of Technology&amp;quot; http://web.njit.edu/~gblank/cis683/Larman%20Chapter%2018.ppt &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Marc Conrad's presentation&amp;quot; http://www.perisic.com/oosd/design/GRASP.ppt&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Paul Christmann's notes&amp;quot; http://www.christmann.ws/ucis342/class7/class7.html &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes from Kutztown University&amp;quot; http://faculty.kutztown.edu/spiegel/CSc520/PowerPoint/10_GRASP_1.ppt&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes from Marist College&amp;quot; http://www.academic.marist.edu/~jzbv/SoftwareDevelopment/GRASP.ppt&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Patterns in Java&amp;quot; Vol 1 and Vol 2 - Mark Grand - Wiley Computer Publishing&lt;/div&gt;</summary>
		<author><name>Ndokuzo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=9921</id>
		<title>CSC/ECE 517 Fall 2007/wiki3 5 ns</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=9921"/>
		<updated>2007-11-27T20:00:04Z</updated>

		<summary type="html">&lt;p&gt;Ndokuzo: /* Information Available on the Web */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''Take the Creator pattern and catalog the information on it available on the Web. Explain how it is different from the Factory pattern. Find good descriptions and good, concise, understandable examples. Tell which you consider the best to present to a class.''&lt;br /&gt;
=GRASP=&lt;br /&gt;
GRASP stands for '''G'''eneral '''R'''esponsibility '''A'''ssignment '''S'''oftware '''P'''atterns (or '''P'''rinciples), and they are the common object-oriented design patterns or principles that assign responsibility to classes and objects.&lt;br /&gt;
Some of GRASP includes Information Expert, Creator, Controller, Low Coupling, High Cohesion, Polymorphism, Pure Fabrication, Indirection and Protected Variations.&lt;br /&gt;
&lt;br /&gt;
=What is Creator Pattern?=&lt;br /&gt;
Creator Pattern is one of the GRASP approaches, which is developed to find an answer to the question of &amp;quot;Who creates an object of class A?&amp;quot; in object-oriented systems. &lt;br /&gt;
Creator pattern suggests that&lt;br /&gt;
Class B should create an instance of Class A if&lt;br /&gt;
* B aggregates instances of A, or;&lt;br /&gt;
* B contains instances of A, or;&lt;br /&gt;
* B records instances of A, or;&lt;br /&gt;
* B closely uses instances of A, or;&lt;br /&gt;
* B has the necessary information for creating the new instance of A.&lt;br /&gt;
&lt;br /&gt;
=What is Factory Pattern?=&lt;br /&gt;
Factory pattern is one of the creational patterns. This pattern is developed to answer the question &amp;quot;How should a class A  instantiate one of the classes B,C,D ,but still be independent of them? &amp;quot;&lt;br /&gt;
&lt;br /&gt;
Factory pattern suggests the creation of a Factory class or a Factory method to which the responsibility of instantiating the object (one of the B,C,D classes) is delegated. This object instance is then returned to class A. If currently the factory method is returning the instance of B class and some changes in requirements have needed for a instance of C class be returned, then the change in the code is only at the Factory method or Factory class. This ensures the changes when required are done at minimumnumber of places&lt;br /&gt;
&lt;br /&gt;
=Creator Pattern vs Factory Pattern=&lt;br /&gt;
The subtle difference between the Creator and Factory pattern can be made out from the synopsis for both the patterns as put by Mark Grand in his book &amp;quot;Patterns in Java&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;Synopsis for Creator Pattern&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; ( one of the GRASP patterns )&lt;br /&gt;
&amp;quot; Creator pattern is used to determine which class should create instances of a class based on the relationship between potential creator classes and the class to be instantiated &amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;Synopsis for Factory Pattern&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; ( one of the Creational Patterns )&lt;br /&gt;
&amp;quot; In Factory pattern, a class is organized so that it can instantiate other classes without being dependent on any of the classes it instantiates.This reusable class is able to remain independent of the classes it instantiates by delegating the choice of which class to instantiate to another object and referring to the newly created object through a common interface&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Thus, the Creator Pattern gives us the guidelines for determining which class should be creating the instances of a particular class depending on the relationship between theses classes. The Factory Pattern provides guidelines to deal with the problem of creating objects without specifying the exact class of object that will be created.The factory method design pattern defines a separate method for creating the objects, which subclasses can then override to specify the derived type of product that will be created. More generally, the term factory method is often used to refer to any method whose main purpose is creation of objects.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;i&amp;gt;Advantages of Creator Pattern&amp;lt;/i&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
# The creator pattern promotes low coupling by making instances of a class responsible for creating objects they need to reference.&lt;br /&gt;
# The referencing class itself creates the objects of the classes it references and hence it avoids being dependent on another class to create objects for itself. &lt;br /&gt;
# By having the aggregate class create the child class, we ensure that the Information Expert, High Cohesion and Low coupling patterns also hold.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;i&amp;gt;Advantages of Factory Pattern&amp;lt;/i&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
# The creation requester class is independent of the class of concrete product objects actually created.&lt;br /&gt;
# The set of product classes that can be instantiated may change dynamically.&lt;br /&gt;
&lt;br /&gt;
From the advantages it might seem that Creator patterns contradicts what is proposed by the Factory Pattern. But the difference that needs to be noted is in the relationship between the classes.&lt;br /&gt;
&lt;br /&gt;
In Creator Pattern, the responsibility of object creation is given to the class itself ONLY IF the class aggregates the class of the object it creates. The Factory Pattern deals with the object creation by classes unrelated to the class of the object it instantiates.In this situation Factory Pattern suggests the delegation of the responsibility to another class or method.&lt;br /&gt;
''&lt;br /&gt;
&lt;br /&gt;
= Example for Creator Pattern =&lt;br /&gt;
The following example was one of the best examples that we saw while searching this topic. The resources found online are generally brief, and use the same example for describing creator pattern, thus we feel the intuitiveness in this example makes it a better option than the one in the web. So we propose this example as the ''best example for teaching Creator Pattern in class.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;i&amp;gt;Employee Time Keeping System &amp;lt;/i&amp;gt;&amp;lt;/u&amp;gt; ( from Mark Grand's book &amp;quot;Patterns in Java&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
This example is used to determine how many hours an employee works during a PayPeriod. During a PayPeriod an employee works for periods of time called Shifts. The system learns about shifts worked by an employee as it receives TimeKeepingEvents.&lt;br /&gt;
The classes used to represent this is shown in below Class Diagram:&lt;br /&gt;
&lt;br /&gt;
[[Image:wiki3.jpg]]&lt;br /&gt;
&lt;br /&gt;
From the diagram we can infer that instances of PayPeriod class compose instances of Shift class. Instances of Shift class compose instances of TimeKeepingEvents class. The subclasses of TimeKeepingEvents represent the time employee started a shift, started a break, ended a break and ended a shift.&lt;br /&gt;
&lt;br /&gt;
Here the problem is determining which classes are responsible for creating instances of Shift and TimeKeepingEvent classes... &lt;br /&gt;
&lt;br /&gt;
The Creator Pattern states that a class that composes or aggregates instances of another class in a good class to assign responsibility of creating instances of the composed or aggregated classes. &lt;br /&gt;
&lt;br /&gt;
By following the Creator pattern, creating instances of TimeKeepingEvent should be assigned to Shift class, and creating instances of Shift class should be assigned to PayPeriod.&lt;br /&gt;
&lt;br /&gt;
=Information Available on the Web=&lt;br /&gt;
The Creator Pattern does not have many information on the web at all. Most of the websites that we found, use the same approach and the same example for explaining the pattern. In addition to this most of the resources explaining creator pattern online are power point documents for some course's lecture notes which are prepared to be very brief. Here, we present the websites that are dealing with the Creator Pattern:&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/GRASP_(Object_Oriented_Design) &amp;quot;Wikipedia&amp;quot;] is one of the good places to read, to get a better understanding of what GRASP is, and what patterns and principles are included in GRASP. It also briefly explains the Creator Pattern, and how the pattern helps in making the decision that which class should create instances of another class. It provides no examples that illustrates this principle so it is not the best site for Creator Pattern online. &lt;br /&gt;
&lt;br /&gt;
[http://davidhayden.com/blog/dave/archive/2004/12/06/667.aspx &amp;quot;David Hayden&amp;quot;]'s blog on Creator Pattern is again, very brief and straightforward in describing the pattern, he also provides one simple example about adding a new DataRow to a DataTable class. &lt;br /&gt;
&lt;br /&gt;
[http://books.google.com/books?id=r8i-4En_aa4C&amp;amp;pg=PA228&amp;amp;lpg=PA228&amp;amp;dq=%22creator+pattern%22+example&amp;amp;source=web&amp;amp;ots=mT9HKWvlQX&amp;amp;sig=zsygR_-22hq9SfNOQLSiAaEExy8#PPA216,M1 &amp;quot;Craig Larmann&amp;quot;]'s book, Applying UML and Pattern: An Object-Oriented Analysis and Design and the Unified Process, is an excellent book that has a thorough explanation on Creator Pattern and other GRASPs. Some of its sections are available online through google-books. This book explains the Creator Pattern and presents an example of a system with Sale, SalesLineItem and ProductSpecification objects and it discusses how it uses Creator pattern to decide which class is responsible for creating new instances of SalesLineItem. Surprisingly, many of the sources that found online (most of them are lecture notes on object oriented design from different universities), use the example provided in this book for explaining creator pattern, so in our opinion, this is one of the best sources that one can read to learn and understand more about the Creator pattern. &lt;br /&gt;
&lt;br /&gt;
[http://www.augustana.ab.ca/~mohrj/courses/2003.fall/csc220/lecture_notes/responsibilities.html &amp;quot;Lecture Notes&amp;quot;] on GRASP from Augustana College describes the creator pattern briefly and gives the Sale example (which is originally from the book above), this website is a a good one that summarizes what is written in Craig Larmann's book, but it might not be the best place to start learning the Creator Pattern. &lt;br /&gt;
&lt;br /&gt;
[http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/pdf/CS4233%20Class%204.pdf &amp;quot;Lecture Notes&amp;quot;] on GRASP from Worcester Polytechnic Institute is the brief summary of what is explained on Creator Pattern in Craig Larmann's book.&lt;br /&gt;
&lt;br /&gt;
[http://www.soc.napier.ac.uk/module.php3?op=getresource&amp;amp;cloaking=no&amp;amp;resourceid=5938601 &amp;quot;Lecture Notes&amp;quot;] on GRASP from Napier University Edinburgh, also describes the pattern, and uses the Sale example. It also mentions briefly advantages of using this patterns and how it promotes low coupling. &lt;br /&gt;
&lt;br /&gt;
[http://www.cse.ucsd.edu/classes/fa06/cse111/lectures/Lecture%206%20%20Design%20Evaluation%20and%20Intro%20to%20OO%20Patterns.ppt &amp;quot;Lecture Notes&amp;quot;] on GRASP from University of California San Diego explains the terminology used in Creator Pattern (for example: what &amp;quot;aggregates&amp;quot; or &amp;quot;contains&amp;quot; means), it also provides a different example about DatingRequest but the slides are very brief and they  contain only the sequence diagrams of the system so it is not very clear what the example is about and how creator pattern is implemented in it. &lt;br /&gt;
&lt;br /&gt;
[http://faculty.inverhills.edu/dlevitt/CS%202000%20(FP)/GRASP%20Patterns.pdf &amp;quot;Lecture Notes&amp;quot;] on GRASP from Inverhills Community College summarizes the whole points of the Creator Pattern in one slide, and also mentions about the steps of applying the pattern to the system. This slide might be a nice summary of the pattern as a whole but it's not necessarily a good place to start learning the subject. &lt;br /&gt;
&lt;br /&gt;
[http://web.njit.edu/~gblank/cis683/Larman%20Chapter%2018.ppt &amp;quot;Lecture Notes&amp;quot;] on GRASP from New Jersey Institute of Technology explains the Sale example and how creator pattern is applied in detail, this slides are again the summary of Larmann's book is mentioned above, but they summarize the book in detail so one can understand the example by looking through the slides, without actually reading the book. &lt;br /&gt;
&lt;br /&gt;
[http://www.perisic.com/oosd/design/GRASP.ppt &amp;quot;Marc Conrad&amp;quot;]'s presentation has a brief discussion on Creator Pattern, also he presents a Deposit Item example which is an easy-to-understand example. &lt;br /&gt;
&lt;br /&gt;
[http://www.christmann.ws/ucis342/class7/class7.html &amp;quot;Paul Christmann&amp;quot;]'s lecture notes on GRASP pattern, also uses the example from the Larmann's book but the example is explained in detail and where the creator pattern is applied in the system is easy-to-understand.&lt;br /&gt;
&lt;br /&gt;
[http://www.academic.marist.edu/~jzbv/SoftwareDevelopment/GRASP.ppt &amp;quot;Lecture Notes&amp;quot;] from Marist College and [http://faculty.kutztown.edu/spiegel/CSc520/PowerPoint/10_GRASP_1.ppt &amp;quot;Lecture Notes&amp;quot;] from Kutztown University uses Monopoly game example for explaining the creator pattern, even though a person who knows about this pattern can understand what the example is trying to demonstrate, but the explanation of the example can be improved.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
* &amp;quot;Wikipedia&amp;quot; http://en.wikipedia.org/wiki/GRASP_(Object_Oriented_Design)&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;David Hayden&amp;quot; http://davidhayden.com/blog/dave/archive/2004/12/06/667.aspx &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Craig Larmann, Applying UML and Pattern: An Object-Oriented Analysis and Design and the Unified Process&amp;quot; http://books.google.com/books?id=r8i-4En_aa4C&amp;amp;pg=PA228&amp;amp;lpg=PA228&amp;amp;dq=%22creator+pattern%22+example&amp;amp;source=web&amp;amp;ots=mT9HKWvlQX&amp;amp;sig=zsygR_-22hq9SfNOQLSiAaEExy8#PPA216,M1 &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes on GRASP from Augustana College&amp;quot; http://www.augustana.ab.ca/~mohrj/courses/2003.fall/csc220/lecture_notes/responsibilities.html &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes on GRASP from Worcester Polytechnic Institute&amp;quot; http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/pdf/CS4233%20Class%204.pdf &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes on GRASP from Napier University Edinburgh&amp;quot; http://www.soc.napier.ac.uk/module.php3?op=getresource&amp;amp;cloaking=no&amp;amp;resourceid=5938601 &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes on GRASP from University of California San Diego&amp;quot; http://www.cse.ucsd.edu/classes/fa06/cse111/lectures/Lecture%206%20%20Design%20Evaluation%20and%20Intro%20to%20OO%20Patterns.ppt &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes on GRASP from Inverhills Community College&amp;quot; http://faculty.inverhills.edu/dlevitt/CS%202000%20(FP)/GRASP%20Patterns.pdf &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes on GRASP from New Jersey Institute of Technology&amp;quot; http://web.njit.edu/~gblank/cis683/Larman%20Chapter%2018.ppt &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Marc Conrad's presentation&amp;quot; http://www.perisic.com/oosd/design/GRASP.ppt&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Paul Christmann's notes&amp;quot; http://www.christmann.ws/ucis342/class7/class7.html &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes from Kutztown University&amp;quot; http://faculty.kutztown.edu/spiegel/CSc520/PowerPoint/10_GRASP_1.ppt&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes from Marist College&amp;quot; http://www.academic.marist.edu/~jzbv/SoftwareDevelopment/GRASP.ppt&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Patterns in Java&amp;quot; Vol 1 and Vol 2 - Mark Grand - Wiley Computer Publishing&lt;/div&gt;</summary>
		<author><name>Ndokuzo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=9920</id>
		<title>CSC/ECE 517 Fall 2007/wiki3 5 ns</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=9920"/>
		<updated>2007-11-27T19:57:20Z</updated>

		<summary type="html">&lt;p&gt;Ndokuzo: /* Creator Pattern vs Factory Pattern */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''Take the Creator pattern and catalog the information on it available on the Web. Explain how it is different from the Factory pattern. Find good descriptions and good, concise, understandable examples. Tell which you consider the best to present to a class.''&lt;br /&gt;
=GRASP=&lt;br /&gt;
GRASP stands for '''G'''eneral '''R'''esponsibility '''A'''ssignment '''S'''oftware '''P'''atterns (or '''P'''rinciples), and they are the common object-oriented design patterns or principles that assign responsibility to classes and objects.&lt;br /&gt;
Some of GRASP includes Information Expert, Creator, Controller, Low Coupling, High Cohesion, Polymorphism, Pure Fabrication, Indirection and Protected Variations.&lt;br /&gt;
&lt;br /&gt;
=What is Creator Pattern?=&lt;br /&gt;
Creator Pattern is one of the GRASP approaches, which is developed to find an answer to the question of &amp;quot;Who creates an object of class A?&amp;quot; in object-oriented systems. &lt;br /&gt;
Creator pattern suggests that&lt;br /&gt;
Class B should create an instance of Class A if&lt;br /&gt;
* B aggregates instances of A, or;&lt;br /&gt;
* B contains instances of A, or;&lt;br /&gt;
* B records instances of A, or;&lt;br /&gt;
* B closely uses instances of A, or;&lt;br /&gt;
* B has the necessary information for creating the new instance of A.&lt;br /&gt;
&lt;br /&gt;
=What is Factory Pattern?=&lt;br /&gt;
Factory pattern is one of the creational patterns. This pattern is developed to answer the question &amp;quot;How should a class A  instantiate one of the classes B,C,D ,but still be independent of them? &amp;quot;&lt;br /&gt;
&lt;br /&gt;
Factory pattern suggests the creation of a Factory class or a Factory method to which the responsibility of instantiating the object (one of the B,C,D classes) is delegated. This object instance is then returned to class A. If currently the factory method is returning the instance of B class and some changes in requirements have needed for a instance of C class be returned, then the change in the code is only at the Factory method or Factory class. This ensures the changes when required are done at minimumnumber of places&lt;br /&gt;
&lt;br /&gt;
=Creator Pattern vs Factory Pattern=&lt;br /&gt;
The subtle difference between the Creator and Factory pattern can be made out from the synopsis for both the patterns as put by Mark Grand in his book &amp;quot;Patterns in Java&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;Synopsis for Creator Pattern&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; ( one of the GRASP patterns )&lt;br /&gt;
&amp;quot; Creator pattern is used to determine which class should create instances of a class based on the relationship between potential creator classes and the class to be instantiated &amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;Synopsis for Factory Pattern&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; ( one of the Creational Patterns )&lt;br /&gt;
&amp;quot; In Factory pattern, a class is organized so that it can instantiate other classes without being dependent on any of the classes it instantiates.This reusable class is able to remain independent of the classes it instantiates by delegating the choice of which class to instantiate to another object and referring to the newly created object through a common interface&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Thus, the Creator Pattern gives us the guidelines for determining which class should be creating the instances of a particular class depending on the relationship between theses classes. The Factory Pattern provides guidelines to deal with the problem of creating objects without specifying the exact class of object that will be created.The factory method design pattern defines a separate method for creating the objects, which subclasses can then override to specify the derived type of product that will be created. More generally, the term factory method is often used to refer to any method whose main purpose is creation of objects.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;i&amp;gt;Advantages of Creator Pattern&amp;lt;/i&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
# The creator pattern promotes low coupling by making instances of a class responsible for creating objects they need to reference.&lt;br /&gt;
# The referencing class itself creates the objects of the classes it references and hence it avoids being dependent on another class to create objects for itself. &lt;br /&gt;
# By having the aggregate class create the child class, we ensure that the Information Expert, High Cohesion and Low coupling patterns also hold.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;i&amp;gt;Advantages of Factory Pattern&amp;lt;/i&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
# The creation requester class is independent of the class of concrete product objects actually created.&lt;br /&gt;
# The set of product classes that can be instantiated may change dynamically.&lt;br /&gt;
&lt;br /&gt;
From the advantages it might seem that Creator patterns contradicts what is proposed by the Factory Pattern. But the difference that needs to be noted is in the relationship between the classes.&lt;br /&gt;
&lt;br /&gt;
In Creator Pattern, the responsibility of object creation is given to the class itself ONLY IF the class aggregates the class of the object it creates. The Factory Pattern deals with the object creation by classes unrelated to the class of the object it instantiates.In this situation Factory Pattern suggests the delegation of the responsibility to another class or method.&lt;br /&gt;
''&lt;br /&gt;
&lt;br /&gt;
= Example for Creator Pattern =&lt;br /&gt;
The following example was one of the best examples that we saw while searching this topic. The resources found online are generally brief, and use the same example for describing creator pattern, thus we feel the intuitiveness in this example makes it a better option than the one in the web. So we propose this example as the ''best example for teaching Creator Pattern in class.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;i&amp;gt;Employee Time Keeping System &amp;lt;/i&amp;gt;&amp;lt;/u&amp;gt; ( from Mark Grand's book &amp;quot;Patterns in Java&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
This example is used to determine how many hours an employee works during a PayPeriod. During a PayPeriod an employee works for periods of time called Shifts. The system learns about shifts worked by an employee as it receives TimeKeepingEvents.&lt;br /&gt;
The classes used to represent this is shown in below Class Diagram:&lt;br /&gt;
&lt;br /&gt;
[[Image:wiki3.jpg]]&lt;br /&gt;
&lt;br /&gt;
From the diagram we can infer that instances of PayPeriod class compose instances of Shift class. Instances of Shift class compose instances of TimeKeepingEvents class. The subclasses of TimeKeepingEvents represent the time employee started a shift, started a break, ended a break and ended a shift.&lt;br /&gt;
&lt;br /&gt;
Here the problem is determining which classes are responsible for creating instances of Shift and TimeKeepingEvent classes... &lt;br /&gt;
&lt;br /&gt;
The Creator Pattern states that a class that composes or aggregates instances of another class in a good class to assign responsibility of creating instances of the composed or aggregated classes. &lt;br /&gt;
&lt;br /&gt;
By following the Creator pattern, creating instances of TimeKeepingEvent should be assigned to Shift class, and creating instances of Shift class should be assigned to PayPeriod.&lt;br /&gt;
&lt;br /&gt;
=Information Available on the Web=&lt;br /&gt;
The Creator Pattern does not have many information on the web at all. Most of the websites that we found, use the same approach and the same example for explaining the pattern. In addition to this most of the resources explaining creator pattern online are power point documents for some course's lecture notes which are prepared to be very brief. Here, we present the websites dealing with the Creator Pattern:&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/GRASP_(Object_Oriented_Design) &amp;quot;Wikipedia&amp;quot;] is one of the good places to read, to get a better understanding of what GRASP is, and what patterns and principles are included in GRASP. It also briefly explains the Creator Pattern, and how the pattern helps in making the decision that which class should create instances of another class. It provides no examples that illustrates this principle so it is not the best site for Creator Pattern online. &lt;br /&gt;
&lt;br /&gt;
[http://davidhayden.com/blog/dave/archive/2004/12/06/667.aspx &amp;quot;David Hayden&amp;quot;]'s blog on Creator Pattern is again, very brief and straightforward in describing the pattern, he also provides one simple example about adding a new DataRow to a DataTable class. &lt;br /&gt;
&lt;br /&gt;
[http://books.google.com/books?id=r8i-4En_aa4C&amp;amp;pg=PA228&amp;amp;lpg=PA228&amp;amp;dq=%22creator+pattern%22+example&amp;amp;source=web&amp;amp;ots=mT9HKWvlQX&amp;amp;sig=zsygR_-22hq9SfNOQLSiAaEExy8#PPA216,M1 &amp;quot;Craig Larmann&amp;quot;]'s book, Applying UML and Pattern: An Object-Oriented Analysis and Design and the Unified Process, is an excellent book that has a thorough explanation on Creator Pattern and other GRASPs. Some of its sections are available online through google-books. This book explains the Creator Pattern and presents an example of a system with Sale, SalesLineItem and ProductSpecification objects and it discusses how it uses Creator pattern to decide which class is responsible for creating new instances of SalesLineItem. Surprisingly, many of the sources that found online (most of them are lecture notes on object oriented design from different universities), use the example provided in this book for explaining creator pattern, so in our opinion, this is one of the best sources that one can read to learn and understand more about the Creator pattern. &lt;br /&gt;
&lt;br /&gt;
[http://www.augustana.ab.ca/~mohrj/courses/2003.fall/csc220/lecture_notes/responsibilities.html &amp;quot;Lecture Notes&amp;quot;] on GRASP from Augustana College describes the creator pattern briefly and gives the Sale example (which is originally from the book above), this website is a a good one that summarizes what is written in Craig Larmann's book, but it might not be the best place to start learning the Creator Pattern. &lt;br /&gt;
&lt;br /&gt;
[http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/pdf/CS4233%20Class%204.pdf &amp;quot;Lecture Notes&amp;quot;] on GRASP from Worcester Polytechnic Institute is the brief summary of what is explained on Creator Pattern in Craig Larmann's book.&lt;br /&gt;
&lt;br /&gt;
[http://www.soc.napier.ac.uk/module.php3?op=getresource&amp;amp;cloaking=no&amp;amp;resourceid=5938601 &amp;quot;Lecture Notes&amp;quot;] on GRASP from Napier University Edinburgh, also describes the pattern, and uses the Sale example. It also mentions briefly advantages of using this patterns and how it promotes low coupling. &lt;br /&gt;
&lt;br /&gt;
[http://www.cse.ucsd.edu/classes/fa06/cse111/lectures/Lecture%206%20%20Design%20Evaluation%20and%20Intro%20to%20OO%20Patterns.ppt &amp;quot;Lecture Notes&amp;quot;] on GRASP from University of California San Diego explains the terminology used in Creator Pattern (for example: what &amp;quot;aggregates&amp;quot; or &amp;quot;contains&amp;quot; means), it also provides a different example about DatingRequest but the slides are very brief and they  contain only the sequence diagrams of the system so it is not very clear what the example is about and how creator pattern is implemented in it. &lt;br /&gt;
&lt;br /&gt;
[http://faculty.inverhills.edu/dlevitt/CS%202000%20(FP)/GRASP%20Patterns.pdf &amp;quot;Lecture Notes&amp;quot;] on GRASP from Inverhills Community College summarizes the whole points of the Creator Pattern in one slide, and also mentions about the steps of applying the pattern to the system. This slide might be a nice summary of the pattern as a whole but it's not necessarily a good place to start learning the subject. &lt;br /&gt;
&lt;br /&gt;
[http://web.njit.edu/~gblank/cis683/Larman%20Chapter%2018.ppt &amp;quot;Lecture Notes&amp;quot;] on GRASP from New Jersey Institute of Technology explains the Sale example and how creator pattern is applied in detail, this slides are again the summary of Larmann's book is mentioned above, but they summarize the book in detail so one can understand the example by looking through the slides, without actually reading the book. &lt;br /&gt;
&lt;br /&gt;
[http://www.perisic.com/oosd/design/GRASP.ppt &amp;quot;Marc Conrad&amp;quot;]'s presentation has a brief discussion on Creator Pattern, also he presents a Deposit Item example which is an easy-to-understand example. &lt;br /&gt;
&lt;br /&gt;
[http://www.christmann.ws/ucis342/class7/class7.html &amp;quot;Paul Christmann&amp;quot;]'s lecture notes on GRASP pattern, also uses the example from the Larmann's book but the example is explained in detail and where the creator pattern is applied in the system is easy-to-understand.&lt;br /&gt;
&lt;br /&gt;
[http://www.academic.marist.edu/~jzbv/SoftwareDevelopment/GRASP.ppt &amp;quot;Lecture Notes&amp;quot;] from Marist College and [http://faculty.kutztown.edu/spiegel/CSc520/PowerPoint/10_GRASP_1.ppt &amp;quot;Lecture Notes&amp;quot;] from Kutztown University uses Monopoly game example for explaining the creator pattern, even though a person who knows about this pattern can understand what the example is trying to demonstrate, but the explanation of the example can be improved.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
* &amp;quot;Wikipedia&amp;quot; http://en.wikipedia.org/wiki/GRASP_(Object_Oriented_Design)&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;David Hayden&amp;quot; http://davidhayden.com/blog/dave/archive/2004/12/06/667.aspx &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Craig Larmann, Applying UML and Pattern: An Object-Oriented Analysis and Design and the Unified Process&amp;quot; http://books.google.com/books?id=r8i-4En_aa4C&amp;amp;pg=PA228&amp;amp;lpg=PA228&amp;amp;dq=%22creator+pattern%22+example&amp;amp;source=web&amp;amp;ots=mT9HKWvlQX&amp;amp;sig=zsygR_-22hq9SfNOQLSiAaEExy8#PPA216,M1 &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes on GRASP from Augustana College&amp;quot; http://www.augustana.ab.ca/~mohrj/courses/2003.fall/csc220/lecture_notes/responsibilities.html &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes on GRASP from Worcester Polytechnic Institute&amp;quot; http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/pdf/CS4233%20Class%204.pdf &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes on GRASP from Napier University Edinburgh&amp;quot; http://www.soc.napier.ac.uk/module.php3?op=getresource&amp;amp;cloaking=no&amp;amp;resourceid=5938601 &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes on GRASP from University of California San Diego&amp;quot; http://www.cse.ucsd.edu/classes/fa06/cse111/lectures/Lecture%206%20%20Design%20Evaluation%20and%20Intro%20to%20OO%20Patterns.ppt &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes on GRASP from Inverhills Community College&amp;quot; http://faculty.inverhills.edu/dlevitt/CS%202000%20(FP)/GRASP%20Patterns.pdf &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes on GRASP from New Jersey Institute of Technology&amp;quot; http://web.njit.edu/~gblank/cis683/Larman%20Chapter%2018.ppt &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Marc Conrad's presentation&amp;quot; http://www.perisic.com/oosd/design/GRASP.ppt&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Paul Christmann's notes&amp;quot; http://www.christmann.ws/ucis342/class7/class7.html &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes from Kutztown University&amp;quot; http://faculty.kutztown.edu/spiegel/CSc520/PowerPoint/10_GRASP_1.ppt&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes from Marist College&amp;quot; http://www.academic.marist.edu/~jzbv/SoftwareDevelopment/GRASP.ppt&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Patterns in Java&amp;quot; Vol 1 and Vol 2 - Mark Grand - Wiley Computer Publishing&lt;/div&gt;</summary>
		<author><name>Ndokuzo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=9723</id>
		<title>CSC/ECE 517 Fall 2007/wiki3 5 ns</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=9723"/>
		<updated>2007-11-20T02:51:01Z</updated>

		<summary type="html">&lt;p&gt;Ndokuzo: /* Example for Creator Pattern */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''Take the Creator pattern and catalog the information on it available on the Web. Explain how it is different from the Factory pattern. Find good descriptions and good, concise, understandable examples. Tell which you consider the best to present to a class.''&lt;br /&gt;
=GRASP=&lt;br /&gt;
GRASP stands for '''G'''eneral '''R'''esponsibility '''A'''ssignment '''S'''oftware '''P'''atterns (or '''P'''rinciples), and they are the common object-oriented design patterns or principles that assign responsibility to classes and objects.&lt;br /&gt;
Some of GRASP includes Information Expert, Creator, Controller, Low Coupling, High Cohesion, Polymorphism, Pure Fabrication, Indirection, Protected Variations.&lt;br /&gt;
&lt;br /&gt;
=What is Creator Pattern?=&lt;br /&gt;
Creator Pattern is one of the GRASP approaches, which is developed to find an answer to the question of &amp;quot;Who creates an object of class A?&amp;quot; in object-oriented systems. &lt;br /&gt;
Creator pattern suggests that&lt;br /&gt;
Class B should create an instance of Class A if&lt;br /&gt;
* B aggregates instances of A, or;&lt;br /&gt;
* B contains instances of A, or;&lt;br /&gt;
* B records instances of A, or;&lt;br /&gt;
* B closely uses instances of A, or;&lt;br /&gt;
* B has the necessary information for creating the new instance of A.&lt;br /&gt;
&lt;br /&gt;
=Creator Pattern vs Factory Pattern=&lt;br /&gt;
The subtle difference between the Creator and Factory pattern can be made out from the synopsis for both the patterns as put by Mark Grand in his book &amp;quot;Patterns in Java&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;Synopsis for Creator Pattern&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; ( one of the GRASP patterns )&lt;br /&gt;
&amp;quot; Creator pattern is used to determine which class should create instances of a class based on the relationship between potential creator classes and the class to be instantiated &amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;Synopsis for Factory Method&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; ( one of the Creational Patterns )&lt;br /&gt;
&amp;quot; In Factory pattern, a class in organized so that it can instantiate other classes without being dependent on any of the classes it instantiates.This reusable class is able to remain independent of the classes it instantiates by delegating the choice of which class to instantiate to another object and referring to the newly created object through a common interface&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Thus, the Creator Pattern gives us the guidelines for determining which class should be creating the instances of a particular class depending on the relationship between theses classes. The Factory Pattern provides guidelines to deal with the problem of creating objects without specifying the exact class of object that will be created.The factory method design pattern defines a separate method for creating the objects, which subclasses can then override to specify the derived type of product that will be created. More generally, the term factory method is often used to refer to any method whose main purpose is creation of objects.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;i&amp;gt;Advantages of Creator Pattern&amp;lt;/i&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
# The creator pattern promotes low coupling by making instances of a class responsible for creating objects they need to reference&lt;br /&gt;
# By themselves creating the objects, they avoid being dependent on another class to create objects for them &lt;br /&gt;
# By having the aggregate class create the child class, we ensure that the Information Expert, High Cohesion and low coupling patterns also hold.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;i&amp;gt;Advantages of Factory Pattern&amp;lt;/i&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
# The creation requester class is independent of the class of concrete product objects actually created.&lt;br /&gt;
# The set of product classes that can be instantiated may change dynamically&lt;br /&gt;
&lt;br /&gt;
The following example was one of the best examples that we saw while searching this topic. The resources found online are generally brief, and use the same example for describing creator pattern, thus we feel the intuitiveness in this example makes it a better option than the one in the web. So we propose this example as the ''best example for teaching Creator Pattern in class.&lt;br /&gt;
''&lt;br /&gt;
&lt;br /&gt;
= Example for Creator Pattern =&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;i&amp;gt;Employee Time Keeping System &amp;lt;/i&amp;gt;&amp;lt;/u&amp;gt; ( from Mark Grand's book &amp;quot;Patterns in Java&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
This example is used to determine how many hours an employee works during a PayPeriod. During a PayPeriod an employee works for periods of time called Shifts. The system learns about shifts worked by an employee as it receives TimeKeepingEvents.&lt;br /&gt;
The classes used to represent this is shown in below Class Diagram:&lt;br /&gt;
&lt;br /&gt;
[[Image:wiki3.jpg]]&lt;br /&gt;
&lt;br /&gt;
From the diagram we can infer that instances of PayPeriod class compose instances of Shift class. Instances of Shift class compose instances of TimeKeepingEvents class. The subclasses of TimeKeepingEvents represent the time employee started a shift, started a break, ended a break and ended a shift.&lt;br /&gt;
&lt;br /&gt;
Here the problem is determining which classes are responsible for creating instances of Shift and TimeKeepingEvent classes... &lt;br /&gt;
&lt;br /&gt;
The Creator Pattern states that a class that composes or aggregates instances of another class in a good class to assign responsibility of creating instances of the composed or aggregated classes. &lt;br /&gt;
&lt;br /&gt;
By following the Creator pattern, creating instances of TimeKeepingEvent should be assigned to Shift class, and creating instances of Shift class should be assigned to PayPeriod.&lt;br /&gt;
&lt;br /&gt;
=Information Available on the Web=&lt;br /&gt;
The Creator Pattern does not have many information on the web at all. Most of the websites that we found, use the same approach and the same example for explaining the pattern. In addition to this most of the resources explaining creator pattern online are power point documents for some course's lecture notes which are prepared to be very brief. Here, we are presenting the websites that we think they do a better job than other resources that we found online.&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/GRASP_(Object_Oriented_Design) &amp;quot;Wikipedia&amp;quot;] is one of the good places to read, to get a better understanding of what GRASP is, and what patterns and principles are included in GRASP. It also briefly explains the Creator Pattern, and how it decides that which class should create instances of another class. It provides no examples that illustrates this principle so it is not the best site for Creator Pattern online. &lt;br /&gt;
&lt;br /&gt;
[http://davidhayden.com/blog/dave/archive/2004/12/06/667.aspx &amp;quot;David Hayden&amp;quot;]'s blog on Creator Pattern is again, very brief and straightforward in describing the pattern, he also provides one simple example about adding a new DataRow to a DataTable class. &lt;br /&gt;
&lt;br /&gt;
[http://books.google.com/books?id=r8i-4En_aa4C&amp;amp;pg=PA228&amp;amp;lpg=PA228&amp;amp;dq=%22creator+pattern%22+example&amp;amp;source=web&amp;amp;ots=mT9HKWvlQX&amp;amp;sig=zsygR_-22hq9SfNOQLSiAaEExy8#PPA216,M1 &amp;quot;Craig Larmann&amp;quot;]'s book, Applying UML and Pattern: An Object-Oriented Analysis and Design and the Unified Process, is an excellent book that has a thorough explanation on Creator Pattern and other GRASPs. Some of its sections are available online through google-books. This book explains the Creator Pattern and presents an example of a system with Sale, SalesLineItem and ProductSpecification objects and it discusses how it uses Creator pattern to decide which class is responsible for creating new instances of SalesLineItem. Surprisingly, many of the sources that found online (most of them are lecture notes on object oriented design from different universities), use the example provided in this book for explaining creator pattern, so in our opinion, this is one of the best sources that one can read to learn and understand more about the Creator pattern. &lt;br /&gt;
&lt;br /&gt;
[http://www.augustana.ab.ca/~mohrj/courses/2003.fall/csc220/lecture_notes/responsibilities.html &amp;quot;Lecture Notes&amp;quot;] on GRASP from Augustana College describes the creator pattern briefly and gives the Sale example (which is originally from the book above), this website is a a good one that summarizes what is written in Craig Larmann's book, but it might not be the best place to start learning the Creator Pattern. &lt;br /&gt;
&lt;br /&gt;
[http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/pdf/CS4233%20Class%204.pdf &amp;quot;Lecture Notes&amp;quot;] on GRASP from Worcester Polytechnic Institute is the brief summary of what is explained on Creator Pattern in Craig Larmann's book.&lt;br /&gt;
&lt;br /&gt;
[http://www.soc.napier.ac.uk/module.php3?op=getresource&amp;amp;cloaking=no&amp;amp;resourceid=5938601 &amp;quot;Lecture Notes&amp;quot;] on GRASP from Napier University Edinburgh, also describes the pattern, and uses the Sale example. It also mentions briefly advantages of using this patterns and how it promotes low coupling. &lt;br /&gt;
&lt;br /&gt;
[http://www.cse.ucsd.edu/classes/fa06/cse111/lectures/Lecture%206%20%20Design%20Evaluation%20and%20Intro%20to%20OO%20Patterns.ppt &amp;quot;Lecture Notes&amp;quot;] on GRASP from University of California San Diego explains the terminology used in Creator Pattern (for example: what &amp;quot;aggregates&amp;quot; or &amp;quot;contains&amp;quot; means), it also provides a different example about DatingRequest but the slides are very brief and they only contain the sequence diagrams of the system so it is not very clear what the example is about and how creator pattern is implemented in it. &lt;br /&gt;
&lt;br /&gt;
[http://faculty.inverhills.edu/dlevitt/CS%202000%20(FP)/GRASP%20Patterns.pdf &amp;quot;Lecture Notes&amp;quot;] on GRASP from Inverhills Community College summarizes the whole points of the Creator Pattern in one slide, and also mentions about the steps of applying the pattern to the system. This slide might be a nice summary of the pattern as a whole but it's not necessarily a good place to start learning the subject. &lt;br /&gt;
&lt;br /&gt;
[http://web.njit.edu/~gblank/cis683/Larman%20Chapter%2018.ppt &amp;quot;Lecture Notes&amp;quot;] on GRASP from New Jersey Institute of Technology explains the Sale example and how creator pattern is applied in detail, this slides are again the summary of Larmann's book is mentioned above, but they summarize the book in detail so one can understand the example by looking through the slides, without actually reading the book. &lt;br /&gt;
&lt;br /&gt;
[http://www.perisic.com/oosd/design/GRASP.ppt &amp;quot;Marc Conrad&amp;quot;]'s presentation has a brief discussion on Creator Pattern, also he presents a Deposit Item example which is an easy-to-understand example. &lt;br /&gt;
&lt;br /&gt;
[http://www.christmann.ws/ucis342/class7/class7.html &amp;quot;Paul Christmann&amp;quot;]'s lecture notes on GRASP pattern, also uses the example from the Larmann's book but the example is explained in detail and where the creator pattern is applied in the system is easy-to-understand.&lt;br /&gt;
&lt;br /&gt;
[http://www.academic.marist.edu/~jzbv/SoftwareDevelopment/GRASP.ppt &amp;quot;Lecture Notes&amp;quot;] from Marist College and [http://faculty.kutztown.edu/spiegel/CSc520/PowerPoint/10_GRASP_1.ppt &amp;quot;Lecture Notes&amp;quot;] from Kutztown University uses Monopoly game example for explaining the creator pattern, even though a person who knows about this pattern can understand what the example is trying to demonstrate, but the explanation of the example can be improved.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
* &amp;quot;Wikipedia&amp;quot; http://en.wikipedia.org/wiki/GRASP_(Object_Oriented_Design)&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;David Hayden&amp;quot; http://davidhayden.com/blog/dave/archive/2004/12/06/667.aspx &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Craig Larmann, Applying UML and Pattern: An Object-Oriented Analysis and Design and the Unified Process&amp;quot; http://books.google.com/books?id=r8i-4En_aa4C&amp;amp;pg=PA228&amp;amp;lpg=PA228&amp;amp;dq=%22creator+pattern%22+example&amp;amp;source=web&amp;amp;ots=mT9HKWvlQX&amp;amp;sig=zsygR_-22hq9SfNOQLSiAaEExy8#PPA216,M1 &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes on GRASP from Augustana College&amp;quot; http://www.augustana.ab.ca/~mohrj/courses/2003.fall/csc220/lecture_notes/responsibilities.html &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes on GRASP from Worcester Polytechnic Institute&amp;quot; http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/pdf/CS4233%20Class%204.pdf &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes on GRASP from Napier University Edinburgh&amp;quot; http://www.soc.napier.ac.uk/module.php3?op=getresource&amp;amp;cloaking=no&amp;amp;resourceid=5938601 &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes on GRASP from University of California San Diego&amp;quot; http://www.cse.ucsd.edu/classes/fa06/cse111/lectures/Lecture%206%20%20Design%20Evaluation%20and%20Intro%20to%20OO%20Patterns.ppt &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes on GRASP from Inverhills Community College&amp;quot; http://faculty.inverhills.edu/dlevitt/CS%202000%20(FP)/GRASP%20Patterns.pdf &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes on GRASP from New Jersey Institute of Technology&amp;quot; http://web.njit.edu/~gblank/cis683/Larman%20Chapter%2018.ppt &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Marc Conrad's presentation&amp;quot; http://www.perisic.com/oosd/design/GRASP.ppt&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Paul Christmann's notes&amp;quot; http://www.christmann.ws/ucis342/class7/class7.html &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes from Kutztown University&amp;quot; http://faculty.kutztown.edu/spiegel/CSc520/PowerPoint/10_GRASP_1.ppt&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes from Marist College&amp;quot; http://www.academic.marist.edu/~jzbv/SoftwareDevelopment/GRASP.ppt&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Patterns in Java&amp;quot; Vol 1 and Vol 2 - Mark Grand - Wiley Computer Publishing&lt;/div&gt;</summary>
		<author><name>Ndokuzo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=9719</id>
		<title>CSC/ECE 517 Fall 2007/wiki3 5 ns</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=9719"/>
		<updated>2007-11-20T02:45:32Z</updated>

		<summary type="html">&lt;p&gt;Ndokuzo: /* Creator Pattern vs Factory Pattern */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''Take the Creator pattern and catalog the information on it available on the Web. Explain how it is different from the Factory pattern. Find good descriptions and good, concise, understandable examples. Tell which you consider the best to present to a class.''&lt;br /&gt;
=GRASP=&lt;br /&gt;
GRASP stands for '''G'''eneral '''R'''esponsibility '''A'''ssignment '''S'''oftware '''P'''atterns (or '''P'''rinciples), and they are the common object-oriented design patterns or principles that assign responsibility to classes and objects.&lt;br /&gt;
Some of GRASP includes Information Expert, Creator, Controller, Low Coupling, High Cohesion, Polymorphism, Pure Fabrication, Indirection, Protected Variations.&lt;br /&gt;
&lt;br /&gt;
=What is Creator Pattern?=&lt;br /&gt;
Creator Pattern is one of the GRASP approaches, which is developed to find an answer to the question of &amp;quot;Who creates an object of class A?&amp;quot; in object-oriented systems. &lt;br /&gt;
Creator pattern suggests that&lt;br /&gt;
Class B should create an instance of Class A if&lt;br /&gt;
* B aggregates instances of A, or;&lt;br /&gt;
* B contains instances of A, or;&lt;br /&gt;
* B records instances of A, or;&lt;br /&gt;
* B closely uses instances of A, or;&lt;br /&gt;
* B has the necessary information for creating the new instance of A.&lt;br /&gt;
&lt;br /&gt;
=Creator Pattern vs Factory Pattern=&lt;br /&gt;
The subtle difference between the Creator and Factory pattern can be made out from the synopsis for both the patterns as put by Mark Grand in his book &amp;quot;Patterns in Java&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;Synopsis for Creator Pattern&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; ( one of the GRASP patterns )&lt;br /&gt;
&amp;quot; Creator pattern is used to determine which class should create instances of a class based on the relationship between potential creator classes and the class to be instantiated &amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;Synopsis for Factory Method&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; ( one of the Creational Patterns )&lt;br /&gt;
&amp;quot; In Factory pattern, a class in organized so that it can instantiate other classes without being dependent on any of the classes it instantiates.This reusable class is able to remain independent of the classes it instantiates by delegating the choice of which class to instantiate to another object and referring to the newly created object through a common interface&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Thus, the Creator Pattern gives us the guidelines for determining which class should be creating the instances of a particular class depending on the relationship between theses classes. The Factory Pattern provides guidelines to deal with the problem of creating objects without specifying the exact class of object that will be created.The factory method design pattern defines a separate method for creating the objects, which subclasses can then override to specify the derived type of product that will be created. More generally, the term factory method is often used to refer to any method whose main purpose is creation of objects.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;i&amp;gt;Advantages of Creator Pattern&amp;lt;/i&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
# The creator pattern promotes low coupling by making instances of a class responsible for creating objects they need to reference&lt;br /&gt;
# By themselves creating the objects, they avoid being dependent on another class to create objects for them &lt;br /&gt;
# By having the aggregate class create the child class, we ensure that the Information Expert, High Cohesion and low coupling patterns also hold.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;i&amp;gt;Advantages of Factory Pattern&amp;lt;/i&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
# The creation requester class is independent of the class of concrete product objects actually created.&lt;br /&gt;
# The set of product classes that can be instantiated may change dynamically&lt;br /&gt;
&lt;br /&gt;
The following example was one of the best examples that we saw while searching this topic. The resources found online are generally brief, and use the same example for describing creator pattern, thus we feel the intuitiveness in this example makes it a better option than the one in the web. So we propose this example as the ''best example for teaching Creator Pattern in class.&lt;br /&gt;
''&lt;br /&gt;
&lt;br /&gt;
= Example for Creator Pattern =&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;i&amp;gt;Employee Time Keeping System &amp;lt;/i&amp;gt;&amp;lt;/u&amp;gt; ( from Mark Grand's book &amp;quot;Patterns in Java&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
This is used to determine how many hours an employee works during a payperiod.During a PayPeriod an employee works for periods of time called Shifts. The system learns about shifts worked by an employee as it receives TimeKeepingEvents.&lt;br /&gt;
The classes used to represent this is shown in below Class Diagram:&lt;br /&gt;
&lt;br /&gt;
[[Image:wiki3.jpg]]&lt;br /&gt;
&lt;br /&gt;
From the diagram we can infer that instances of PayPeriod class compose instances of Shift class. Instances of Shift class compose instances of TimeKeepingEvents class. The subclasses of TimeKeepingEvents represent the time employee started a shift, started a break, ended a break and ended a shift.&lt;br /&gt;
&lt;br /&gt;
Here we have the requirement of determining which classes are responsible for creating instances of Shift and TimeKeepingEvent classes. &lt;br /&gt;
&lt;br /&gt;
The Creator Pattern states that a class that composes or aggregates instances of another class in a good class to assign responsibility of creating instances of the composed or aggregated classes. &lt;br /&gt;
&lt;br /&gt;
As per the Creator pattern, we decide to make the PayPeriod class responsible for creating instances of Shift class and Shift class responsible for creating the instances of TimeKeepingEvent.&lt;br /&gt;
&lt;br /&gt;
=Information Available on the Web=&lt;br /&gt;
The Creator Pattern does not have many information on the web at all. Most of the websites that we found, use the same approach and the same example for explaining the pattern. In addition to this most of the resources explaining creator pattern online are power point documents for some course's lecture notes which are prepared to be very brief. Here, we are presenting the websites that we think they do a better job than other resources that we found online.&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/GRASP_(Object_Oriented_Design) &amp;quot;Wikipedia&amp;quot;] is one of the good places to read, to get a better understanding of what GRASP is, and what patterns and principles are included in GRASP. It also briefly explains the Creator Pattern, and how it decides that which class should create instances of another class. It provides no examples that illustrates this principle so it is not the best site for Creator Pattern online. &lt;br /&gt;
&lt;br /&gt;
[http://davidhayden.com/blog/dave/archive/2004/12/06/667.aspx &amp;quot;David Hayden&amp;quot;]'s blog on Creator Pattern is again, very brief and straightforward in describing the pattern, he also provides one simple example about adding a new DataRow to a DataTable class. &lt;br /&gt;
&lt;br /&gt;
[http://books.google.com/books?id=r8i-4En_aa4C&amp;amp;pg=PA228&amp;amp;lpg=PA228&amp;amp;dq=%22creator+pattern%22+example&amp;amp;source=web&amp;amp;ots=mT9HKWvlQX&amp;amp;sig=zsygR_-22hq9SfNOQLSiAaEExy8#PPA216,M1 &amp;quot;Craig Larmann&amp;quot;]'s book, Applying UML and Pattern: An Object-Oriented Analysis and Design and the Unified Process, is an excellent book that has a thorough explanation on Creator Pattern and other GRASPs. Some of its sections are available online through google-books. This book explains the Creator Pattern and presents an example of a system with Sale, SalesLineItem and ProductSpecification objects and it discusses how it uses Creator pattern to decide which class is responsible for creating new instances of SalesLineItem. Surprisingly, many of the sources that found online (most of them are lecture notes on object oriented design from different universities), use the example provided in this book for explaining creator pattern, so in our opinion, this is one of the best sources that one can read to learn and understand more about the Creator pattern. &lt;br /&gt;
&lt;br /&gt;
[http://www.augustana.ab.ca/~mohrj/courses/2003.fall/csc220/lecture_notes/responsibilities.html &amp;quot;Lecture Notes&amp;quot;] on GRASP from Augustana College describes the creator pattern briefly and gives the Sale example (which is originally from the book above), this website is a a good one that summarizes what is written in Craig Larmann's book, but it might not be the best place to start learning the Creator Pattern. &lt;br /&gt;
&lt;br /&gt;
[http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/pdf/CS4233%20Class%204.pdf &amp;quot;Lecture Notes&amp;quot;] on GRASP from Worcester Polytechnic Institute is the brief summary of what is explained on Creator Pattern in Craig Larmann's book.&lt;br /&gt;
&lt;br /&gt;
[http://www.soc.napier.ac.uk/module.php3?op=getresource&amp;amp;cloaking=no&amp;amp;resourceid=5938601 &amp;quot;Lecture Notes&amp;quot;] on GRASP from Napier University Edinburgh, also describes the pattern, and uses the Sale example. It also mentions briefly advantages of using this patterns and how it promotes low coupling. &lt;br /&gt;
&lt;br /&gt;
[http://www.cse.ucsd.edu/classes/fa06/cse111/lectures/Lecture%206%20%20Design%20Evaluation%20and%20Intro%20to%20OO%20Patterns.ppt &amp;quot;Lecture Notes&amp;quot;] on GRASP from University of California San Diego explains the terminology used in Creator Pattern (for example: what &amp;quot;aggregates&amp;quot; or &amp;quot;contains&amp;quot; means), it also provides a different example about DatingRequest but the slides are very brief and they only contain the sequence diagrams of the system so it is not very clear what the example is about and how creator pattern is implemented in it. &lt;br /&gt;
&lt;br /&gt;
[http://faculty.inverhills.edu/dlevitt/CS%202000%20(FP)/GRASP%20Patterns.pdf &amp;quot;Lecture Notes&amp;quot;] on GRASP from Inverhills Community College summarizes the whole points of the Creator Pattern in one slide, and also mentions about the steps of applying the pattern to the system. This slide might be a nice summary of the pattern as a whole but it's not necessarily a good place to start learning the subject. &lt;br /&gt;
&lt;br /&gt;
[http://web.njit.edu/~gblank/cis683/Larman%20Chapter%2018.ppt &amp;quot;Lecture Notes&amp;quot;] on GRASP from New Jersey Institute of Technology explains the Sale example and how creator pattern is applied in detail, this slides are again the summary of Larmann's book is mentioned above, but they summarize the book in detail so one can understand the example by looking through the slides, without actually reading the book. &lt;br /&gt;
&lt;br /&gt;
[http://www.perisic.com/oosd/design/GRASP.ppt &amp;quot;Marc Conrad&amp;quot;]'s presentation has a brief discussion on Creator Pattern, also he presents a Deposit Item example which is an easy-to-understand example. &lt;br /&gt;
&lt;br /&gt;
[http://www.christmann.ws/ucis342/class7/class7.html &amp;quot;Paul Christmann&amp;quot;]'s lecture notes on GRASP pattern, also uses the example from the Larmann's book but the example is explained in detail and where the creator pattern is applied in the system is easy-to-understand.&lt;br /&gt;
&lt;br /&gt;
[http://www.academic.marist.edu/~jzbv/SoftwareDevelopment/GRASP.ppt &amp;quot;Lecture Notes&amp;quot;] from Marist College and [http://faculty.kutztown.edu/spiegel/CSc520/PowerPoint/10_GRASP_1.ppt &amp;quot;Lecture Notes&amp;quot;] from Kutztown University uses Monopoly game example for explaining the creator pattern, even though a person who knows about this pattern can understand what the example is trying to demonstrate, but the explanation of the example can be improved.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
* &amp;quot;Wikipedia&amp;quot; http://en.wikipedia.org/wiki/GRASP_(Object_Oriented_Design)&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;David Hayden&amp;quot; http://davidhayden.com/blog/dave/archive/2004/12/06/667.aspx &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Craig Larmann, Applying UML and Pattern: An Object-Oriented Analysis and Design and the Unified Process&amp;quot; http://books.google.com/books?id=r8i-4En_aa4C&amp;amp;pg=PA228&amp;amp;lpg=PA228&amp;amp;dq=%22creator+pattern%22+example&amp;amp;source=web&amp;amp;ots=mT9HKWvlQX&amp;amp;sig=zsygR_-22hq9SfNOQLSiAaEExy8#PPA216,M1 &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes on GRASP from Augustana College&amp;quot; http://www.augustana.ab.ca/~mohrj/courses/2003.fall/csc220/lecture_notes/responsibilities.html &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes on GRASP from Worcester Polytechnic Institute&amp;quot; http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/pdf/CS4233%20Class%204.pdf &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes on GRASP from Napier University Edinburgh&amp;quot; http://www.soc.napier.ac.uk/module.php3?op=getresource&amp;amp;cloaking=no&amp;amp;resourceid=5938601 &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes on GRASP from University of California San Diego&amp;quot; http://www.cse.ucsd.edu/classes/fa06/cse111/lectures/Lecture%206%20%20Design%20Evaluation%20and%20Intro%20to%20OO%20Patterns.ppt &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes on GRASP from Inverhills Community College&amp;quot; http://faculty.inverhills.edu/dlevitt/CS%202000%20(FP)/GRASP%20Patterns.pdf &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes on GRASP from New Jersey Institute of Technology&amp;quot; http://web.njit.edu/~gblank/cis683/Larman%20Chapter%2018.ppt &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Marc Conrad's presentation&amp;quot; http://www.perisic.com/oosd/design/GRASP.ppt&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Paul Christmann's notes&amp;quot; http://www.christmann.ws/ucis342/class7/class7.html &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes from Kutztown University&amp;quot; http://faculty.kutztown.edu/spiegel/CSc520/PowerPoint/10_GRASP_1.ppt&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes from Marist College&amp;quot; http://www.academic.marist.edu/~jzbv/SoftwareDevelopment/GRASP.ppt&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Patterns in Java&amp;quot; Vol 1 and Vol 2 - Mark Grand - Wiley Computer Publishing&lt;/div&gt;</summary>
		<author><name>Ndokuzo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=9718</id>
		<title>CSC/ECE 517 Fall 2007/wiki3 5 ns</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=9718"/>
		<updated>2007-11-20T02:44:44Z</updated>

		<summary type="html">&lt;p&gt;Ndokuzo: /* Creator Pattern vs Factory Pattern */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''Take the Creator pattern and catalog the information on it available on the Web. Explain how it is different from the Factory pattern. Find good descriptions and good, concise, understandable examples. Tell which you consider the best to present to a class.''&lt;br /&gt;
=GRASP=&lt;br /&gt;
GRASP stands for '''G'''eneral '''R'''esponsibility '''A'''ssignment '''S'''oftware '''P'''atterns (or '''P'''rinciples), and they are the common object-oriented design patterns or principles that assign responsibility to classes and objects.&lt;br /&gt;
Some of GRASP includes Information Expert, Creator, Controller, Low Coupling, High Cohesion, Polymorphism, Pure Fabrication, Indirection, Protected Variations.&lt;br /&gt;
&lt;br /&gt;
=What is Creator Pattern?=&lt;br /&gt;
Creator Pattern is one of the GRASP approaches, which is developed to find an answer to the question of &amp;quot;Who creates an object of class A?&amp;quot; in object-oriented systems. &lt;br /&gt;
Creator pattern suggests that&lt;br /&gt;
Class B should create an instance of Class A if&lt;br /&gt;
* B aggregates instances of A, or;&lt;br /&gt;
* B contains instances of A, or;&lt;br /&gt;
* B records instances of A, or;&lt;br /&gt;
* B closely uses instances of A, or;&lt;br /&gt;
* B has the necessary information for creating the new instance of A.&lt;br /&gt;
&lt;br /&gt;
=Creator Pattern vs Factory Pattern=&lt;br /&gt;
The subtle difference between the Creator and Factory pattern can be made out from the synopsis for both the patterns as put by Mark Grand in his book &amp;quot;Patterns in Java&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;Synopsis for Creator Pattern&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; ( one of the GRASP patterns )&lt;br /&gt;
&amp;quot; Creator pattern is used to determine which class should create instances of a class based on the relationship between potential creator classes and the class to be instantiated &amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;Synopsis for Factory Method&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; ( one of the Creational Patterns )&lt;br /&gt;
&amp;quot; In Factory pattern, a class in organized so that it can instantiate other classes without being dependent on any of the classes it instantiates.This reusable class is able to remain independent of the classes it instantiates by delegating the choice of which class to instantiate to another object and referring to the newly created object through a common interface&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Thus, the Creator Pattern gives us the guidelines for determining which class should be creating the instances of a particular class depending on the relationship between theses classes. The Factory Pattern provides guidelines to deal with the problem of creating objects without specifying the exact class of object that will be created.The factory method design pattern defines a separate method for creating the objects, which subclasses can then override to specify the derived type of product that will be created. More generally, the term factory method is often used to refer to any method whose main purpose is creation of objects.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;i&amp;gt;Advantages of Creator Pattern&amp;lt;/i&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
# The creator pattern promotes low coupling by making instances of a class responsible for creating objects they need to reference&lt;br /&gt;
# By themselves creating the objects, they avoid being dependent on another class to create objects for them &lt;br /&gt;
# By having the aggregate class create the child class, we ensure that the Information Expert, High Cohesion and low coupling patterns also hold.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;i&amp;gt;Advantages of Factory Pattern&amp;lt;/i&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
# The creation requester class is independent of the class of concrete product objects actually created.&lt;br /&gt;
# The set of product classes that can be instantiated may change dynamically&lt;br /&gt;
&lt;br /&gt;
The following example was one of the best examples that we saw. The resources found online are generally brief, use the same example for describing creator pattern, thus we feel the intuitiveness in this example makes it a better option than the one in the web. So we propose this example as the ''best example for teaching Creator Pattern in class.&lt;br /&gt;
''&lt;br /&gt;
&lt;br /&gt;
= Example for Creator Pattern =&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;i&amp;gt;Employee Time Keeping System &amp;lt;/i&amp;gt;&amp;lt;/u&amp;gt; ( from Mark Grand's book &amp;quot;Patterns in Java&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
This is used to determine how many hours an employee works during a payperiod.During a PayPeriod an employee works for periods of time called Shifts. The system learns about shifts worked by an employee as it receives TimeKeepingEvents.&lt;br /&gt;
The classes used to represent this is shown in below Class Diagram:&lt;br /&gt;
&lt;br /&gt;
[[Image:wiki3.jpg]]&lt;br /&gt;
&lt;br /&gt;
From the diagram we can infer that instances of PayPeriod class compose instances of Shift class. Instances of Shift class compose instances of TimeKeepingEvents class. The subclasses of TimeKeepingEvents represent the time employee started a shift, started a break, ended a break and ended a shift.&lt;br /&gt;
&lt;br /&gt;
Here we have the requirement of determining which classes are responsible for creating instances of Shift and TimeKeepingEvent classes. &lt;br /&gt;
&lt;br /&gt;
The Creator Pattern states that a class that composes or aggregates instances of another class in a good class to assign responsibility of creating instances of the composed or aggregated classes. &lt;br /&gt;
&lt;br /&gt;
As per the Creator pattern, we decide to make the PayPeriod class responsible for creating instances of Shift class and Shift class responsible for creating the instances of TimeKeepingEvent.&lt;br /&gt;
&lt;br /&gt;
=Information Available on the Web=&lt;br /&gt;
The Creator Pattern does not have many information on the web at all. Most of the websites that we found, use the same approach and the same example for explaining the pattern. In addition to this most of the resources explaining creator pattern online are power point documents for some course's lecture notes which are prepared to be very brief. Here, we are presenting the websites that we think they do a better job than other resources that we found online.&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/GRASP_(Object_Oriented_Design) &amp;quot;Wikipedia&amp;quot;] is one of the good places to read, to get a better understanding of what GRASP is, and what patterns and principles are included in GRASP. It also briefly explains the Creator Pattern, and how it decides that which class should create instances of another class. It provides no examples that illustrates this principle so it is not the best site for Creator Pattern online. &lt;br /&gt;
&lt;br /&gt;
[http://davidhayden.com/blog/dave/archive/2004/12/06/667.aspx &amp;quot;David Hayden&amp;quot;]'s blog on Creator Pattern is again, very brief and straightforward in describing the pattern, he also provides one simple example about adding a new DataRow to a DataTable class. &lt;br /&gt;
&lt;br /&gt;
[http://books.google.com/books?id=r8i-4En_aa4C&amp;amp;pg=PA228&amp;amp;lpg=PA228&amp;amp;dq=%22creator+pattern%22+example&amp;amp;source=web&amp;amp;ots=mT9HKWvlQX&amp;amp;sig=zsygR_-22hq9SfNOQLSiAaEExy8#PPA216,M1 &amp;quot;Craig Larmann&amp;quot;]'s book, Applying UML and Pattern: An Object-Oriented Analysis and Design and the Unified Process, is an excellent book that has a thorough explanation on Creator Pattern and other GRASPs. Some of its sections are available online through google-books. This book explains the Creator Pattern and presents an example of a system with Sale, SalesLineItem and ProductSpecification objects and it discusses how it uses Creator pattern to decide which class is responsible for creating new instances of SalesLineItem. Surprisingly, many of the sources that found online (most of them are lecture notes on object oriented design from different universities), use the example provided in this book for explaining creator pattern, so in our opinion, this is one of the best sources that one can read to learn and understand more about the Creator pattern. &lt;br /&gt;
&lt;br /&gt;
[http://www.augustana.ab.ca/~mohrj/courses/2003.fall/csc220/lecture_notes/responsibilities.html &amp;quot;Lecture Notes&amp;quot;] on GRASP from Augustana College describes the creator pattern briefly and gives the Sale example (which is originally from the book above), this website is a a good one that summarizes what is written in Craig Larmann's book, but it might not be the best place to start learning the Creator Pattern. &lt;br /&gt;
&lt;br /&gt;
[http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/pdf/CS4233%20Class%204.pdf &amp;quot;Lecture Notes&amp;quot;] on GRASP from Worcester Polytechnic Institute is the brief summary of what is explained on Creator Pattern in Craig Larmann's book.&lt;br /&gt;
&lt;br /&gt;
[http://www.soc.napier.ac.uk/module.php3?op=getresource&amp;amp;cloaking=no&amp;amp;resourceid=5938601 &amp;quot;Lecture Notes&amp;quot;] on GRASP from Napier University Edinburgh, also describes the pattern, and uses the Sale example. It also mentions briefly advantages of using this patterns and how it promotes low coupling. &lt;br /&gt;
&lt;br /&gt;
[http://www.cse.ucsd.edu/classes/fa06/cse111/lectures/Lecture%206%20%20Design%20Evaluation%20and%20Intro%20to%20OO%20Patterns.ppt &amp;quot;Lecture Notes&amp;quot;] on GRASP from University of California San Diego explains the terminology used in Creator Pattern (for example: what &amp;quot;aggregates&amp;quot; or &amp;quot;contains&amp;quot; means), it also provides a different example about DatingRequest but the slides are very brief and they only contain the sequence diagrams of the system so it is not very clear what the example is about and how creator pattern is implemented in it. &lt;br /&gt;
&lt;br /&gt;
[http://faculty.inverhills.edu/dlevitt/CS%202000%20(FP)/GRASP%20Patterns.pdf &amp;quot;Lecture Notes&amp;quot;] on GRASP from Inverhills Community College summarizes the whole points of the Creator Pattern in one slide, and also mentions about the steps of applying the pattern to the system. This slide might be a nice summary of the pattern as a whole but it's not necessarily a good place to start learning the subject. &lt;br /&gt;
&lt;br /&gt;
[http://web.njit.edu/~gblank/cis683/Larman%20Chapter%2018.ppt &amp;quot;Lecture Notes&amp;quot;] on GRASP from New Jersey Institute of Technology explains the Sale example and how creator pattern is applied in detail, this slides are again the summary of Larmann's book is mentioned above, but they summarize the book in detail so one can understand the example by looking through the slides, without actually reading the book. &lt;br /&gt;
&lt;br /&gt;
[http://www.perisic.com/oosd/design/GRASP.ppt &amp;quot;Marc Conrad&amp;quot;]'s presentation has a brief discussion on Creator Pattern, also he presents a Deposit Item example which is an easy-to-understand example. &lt;br /&gt;
&lt;br /&gt;
[http://www.christmann.ws/ucis342/class7/class7.html &amp;quot;Paul Christmann&amp;quot;]'s lecture notes on GRASP pattern, also uses the example from the Larmann's book but the example is explained in detail and where the creator pattern is applied in the system is easy-to-understand.&lt;br /&gt;
&lt;br /&gt;
[http://www.academic.marist.edu/~jzbv/SoftwareDevelopment/GRASP.ppt &amp;quot;Lecture Notes&amp;quot;] from Marist College and [http://faculty.kutztown.edu/spiegel/CSc520/PowerPoint/10_GRASP_1.ppt &amp;quot;Lecture Notes&amp;quot;] from Kutztown University uses Monopoly game example for explaining the creator pattern, even though a person who knows about this pattern can understand what the example is trying to demonstrate, but the explanation of the example can be improved.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
* &amp;quot;Wikipedia&amp;quot; http://en.wikipedia.org/wiki/GRASP_(Object_Oriented_Design)&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;David Hayden&amp;quot; http://davidhayden.com/blog/dave/archive/2004/12/06/667.aspx &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Craig Larmann, Applying UML and Pattern: An Object-Oriented Analysis and Design and the Unified Process&amp;quot; http://books.google.com/books?id=r8i-4En_aa4C&amp;amp;pg=PA228&amp;amp;lpg=PA228&amp;amp;dq=%22creator+pattern%22+example&amp;amp;source=web&amp;amp;ots=mT9HKWvlQX&amp;amp;sig=zsygR_-22hq9SfNOQLSiAaEExy8#PPA216,M1 &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes on GRASP from Augustana College&amp;quot; http://www.augustana.ab.ca/~mohrj/courses/2003.fall/csc220/lecture_notes/responsibilities.html &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes on GRASP from Worcester Polytechnic Institute&amp;quot; http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/pdf/CS4233%20Class%204.pdf &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes on GRASP from Napier University Edinburgh&amp;quot; http://www.soc.napier.ac.uk/module.php3?op=getresource&amp;amp;cloaking=no&amp;amp;resourceid=5938601 &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes on GRASP from University of California San Diego&amp;quot; http://www.cse.ucsd.edu/classes/fa06/cse111/lectures/Lecture%206%20%20Design%20Evaluation%20and%20Intro%20to%20OO%20Patterns.ppt &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes on GRASP from Inverhills Community College&amp;quot; http://faculty.inverhills.edu/dlevitt/CS%202000%20(FP)/GRASP%20Patterns.pdf &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes on GRASP from New Jersey Institute of Technology&amp;quot; http://web.njit.edu/~gblank/cis683/Larman%20Chapter%2018.ppt &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Marc Conrad's presentation&amp;quot; http://www.perisic.com/oosd/design/GRASP.ppt&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Paul Christmann's notes&amp;quot; http://www.christmann.ws/ucis342/class7/class7.html &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes from Kutztown University&amp;quot; http://faculty.kutztown.edu/spiegel/CSc520/PowerPoint/10_GRASP_1.ppt&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes from Marist College&amp;quot; http://www.academic.marist.edu/~jzbv/SoftwareDevelopment/GRASP.ppt&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Patterns in Java&amp;quot; Vol 1 and Vol 2 - Mark Grand - Wiley Computer Publishing&lt;/div&gt;</summary>
		<author><name>Ndokuzo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=9709</id>
		<title>CSC/ECE 517 Fall 2007/wiki3 5 ns</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=9709"/>
		<updated>2007-11-20T02:28:36Z</updated>

		<summary type="html">&lt;p&gt;Ndokuzo: /* Example for Creator Pattern */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''Take the Creator pattern and catalog the information on it available on the Web. Explain how it is different from the Factory pattern. Find good descriptions and good, concise, understandable examples. Tell which you consider the best to present to a class.''&lt;br /&gt;
=GRASP=&lt;br /&gt;
GRASP stands for '''G'''eneral '''R'''esponsibility '''A'''ssignment '''S'''oftware '''P'''atterns (or '''P'''rinciples), and they are the common object-oriented design patterns or principles that assign responsibility to classes and objects.&lt;br /&gt;
Some of GRASP includes Information Expert, Creator, Controller, Low Coupling, High Cohesion, Polymorphism, Pure Fabrication, Indirection, Protected Variations.&lt;br /&gt;
&lt;br /&gt;
=What is Creator Pattern?=&lt;br /&gt;
Creator Pattern is one of the GRASP approaches, which is developed to find an answer to the question of &amp;quot;Who creates an object of class A?&amp;quot; in object-oriented systems. &lt;br /&gt;
Creator pattern suggests that&lt;br /&gt;
Class B should create an instance of Class A if&lt;br /&gt;
* B aggregates instances of A, or;&lt;br /&gt;
* B contains instances of A, or;&lt;br /&gt;
* B records instances of A, or;&lt;br /&gt;
* B closely uses instances of A, or;&lt;br /&gt;
* B has the necessary information for creating the new instance of A.&lt;br /&gt;
&lt;br /&gt;
=Creator Pattern vs Factory Pattern=&lt;br /&gt;
The subtle difference between the Creator and Factory pattern can be made out from the synopsis for both the patterns as put by Mark Grand in his book &amp;quot;Patterns in Java&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;Synopsis for Creator Pattern&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; ( one of the GRASP patterns )&lt;br /&gt;
&amp;quot; Creator pattern is used to determine which class should create instances of a class based on the relationship between potential creator classes and the class to be instantiated &amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;Synopsis for Factory Method&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; ( one of the Creational Patterns )&lt;br /&gt;
&amp;quot; In Factory pattern, a class in organized so that it can instantiate other classes without being dependent on any of the classes it instantiates.This reusable class is able to remain independent of the classes it instantiates by delegating the choice of which class to instantiate to another object and referring to the newly created object through a common interface&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Thus, the Creator Pattern gives us the guidelines for determining which class should be creating the instances of a particular class depending on the relationship between theses classes. The Factory Pattern provides guidelines to deal with the problem of creating objects without specifying the exact class of object that will be created.The factory method design pattern defines a separate method for creating the objects, which subclasses can then override to specify the derived type of product that will be created. More generally, the term factory method is often used to refer to any method whose main purpose is creation of objects.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;i&amp;gt;Advantages of Creator Pattern&amp;lt;/i&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
# The creator pattern promotes low coupling by making instances of a class responsible for creating objects they need to reference&lt;br /&gt;
# By themselves creating the objects, they avoid being dependent on another class to create objects for them &lt;br /&gt;
# By having the aggregate class create the child class, we ensure that the Information Expert, High Cohesion and low coupling patterns also hold.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;i&amp;gt;Advantages of Factory Pattern&amp;lt;/i&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
# The creation requester class is independent of the class of concrete product objects actually created.&lt;br /&gt;
# The set of product classes that can be instantiated may change dynamically&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following examples are dealt in the light that the Web doesn't provide any example other than the standard &amp;quot;Sales-Item&amp;quot; example.&lt;br /&gt;
We feel the intuitiveness in this example makes it a better option than the one in the web. We thus propose this example as the //** best example for teaching Creator Pattern in class. **//&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Example for Creator Pattern =&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;i&amp;gt;Employee Time Keeping System &amp;lt;/i&amp;gt;&amp;lt;/u&amp;gt; ( from Mark Grand's book &amp;quot;Patterns in Java&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
This is used to determine how many hours an employee works during a payperiod.During a PayPeriod an employee works for periods of time called Shifts. The system learns about shifts worked by an employee as it receives TimeKeepingEvents.&lt;br /&gt;
The classes used to represent this is shown in below Class Diagram:&lt;br /&gt;
&lt;br /&gt;
[[Image:wiki3.jpg]]&lt;br /&gt;
&lt;br /&gt;
From the diagram we can infer that instances of PayPeriod class compose instances of Shift class. Instances of Shift class compose instances of TimeKeepingEvents class. The subclasses of TimeKeepingEvents represent the time employee started a shift, started a break, ended a break and ended a shift.&lt;br /&gt;
&lt;br /&gt;
Here we have the requirement of determining which classes are responsible for creating instances of Shift and TimeKeepingEvent classes. &lt;br /&gt;
&lt;br /&gt;
The Creator Pattern states that a class that composes or aggregates instances of another class in a good class to assign responsibility of creating instances of the composed or aggregated classes. &lt;br /&gt;
&lt;br /&gt;
As per the Creator pattern, we decide to make the PayPeriod class responsible for creating instances of Shift class and Shift class responsible for creating the instances of TimeKeepingEvent.&lt;br /&gt;
&lt;br /&gt;
=Information Available on the Web=&lt;br /&gt;
The Creator Pattern does not have many information on the web at all. Most of the websites that we found, use the same approach and the same example for explaining the pattern. In addition to this most of the resources explaining creator pattern online are power point documents for some course's lecture notes which are prepared to be very brief. Here, we are presenting the websites that we think they do a better job than other resources that we found online.&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/GRASP_(Object_Oriented_Design) &amp;quot;Wikipedia&amp;quot;] is one of the good places to read, to get a better understanding of what GRASP is, and what patterns and principles are included in GRASP. It also briefly explains the Creator Pattern, and how it decides that which class should create instances of another class. It provides no examples that illustrates this principle so it is not the best site for Creator Pattern online. &lt;br /&gt;
&lt;br /&gt;
[http://davidhayden.com/blog/dave/archive/2004/12/06/667.aspx &amp;quot;David Hayden&amp;quot;]'s blog on Creator Pattern is again, very brief and straightforward in describing the pattern, he also provides one simple example about adding a new DataRow to a DataTable class. &lt;br /&gt;
&lt;br /&gt;
[http://books.google.com/books?id=r8i-4En_aa4C&amp;amp;pg=PA228&amp;amp;lpg=PA228&amp;amp;dq=%22creator+pattern%22+example&amp;amp;source=web&amp;amp;ots=mT9HKWvlQX&amp;amp;sig=zsygR_-22hq9SfNOQLSiAaEExy8#PPA216,M1 &amp;quot;Craig Larmann&amp;quot;]'s book, Applying UML and Pattern: An Object-Oriented Analysis and Design and the Unified Process, is an excellent book that has a thorough explanation on Creator Pattern and other GRASPs. Some of its sections are available online through google-books. This book explains the Creator Pattern and presents an example of a system with Sale, SalesLineItem and ProductSpecification objects and it discusses how it uses Creator pattern to decide which class is responsible for creating new instances of SalesLineItem. Surprisingly, many of the sources that found online (most of them are lecture notes on object oriented design from different universities), use the example provided in this book for explaining creator pattern, so in our opinion, this is one of the best sources that one can read to learn and understand more about the Creator pattern. &lt;br /&gt;
&lt;br /&gt;
[http://www.augustana.ab.ca/~mohrj/courses/2003.fall/csc220/lecture_notes/responsibilities.html &amp;quot;Lecture Notes&amp;quot;] on GRASP from Augustana College describes the creator pattern briefly and gives the Sale example (which is originally from the book above), this website is a a good one that summarizes what is written in Craig Larmann's book, but it might not be the best place to start learning the Creator Pattern. &lt;br /&gt;
&lt;br /&gt;
[http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/pdf/CS4233%20Class%204.pdf &amp;quot;Lecture Notes&amp;quot;] on GRASP from Worcester Polytechnic Institute is the brief summary of what is explained on Creator Pattern in Craig Larmann's book.&lt;br /&gt;
&lt;br /&gt;
[http://www.soc.napier.ac.uk/module.php3?op=getresource&amp;amp;cloaking=no&amp;amp;resourceid=5938601 &amp;quot;Lecture Notes&amp;quot;] on GRASP from Napier University Edinburgh, also describes the pattern, and uses the Sale example. It also mentions briefly advantages of using this patterns and how it promotes low coupling. &lt;br /&gt;
&lt;br /&gt;
[http://www.cse.ucsd.edu/classes/fa06/cse111/lectures/Lecture%206%20%20Design%20Evaluation%20and%20Intro%20to%20OO%20Patterns.ppt &amp;quot;Lecture Notes&amp;quot;] on GRASP from University of California San Diego explains the terminology used in Creator Pattern (for example: what &amp;quot;aggregates&amp;quot; or &amp;quot;contains&amp;quot; means), it also provides a different example about DatingRequest but the slides are very brief and they only contain the sequence diagrams of the system so it is not very clear what the example is about and how creator pattern is implemented in it. &lt;br /&gt;
&lt;br /&gt;
[http://faculty.inverhills.edu/dlevitt/CS%202000%20(FP)/GRASP%20Patterns.pdf &amp;quot;Lecture Notes&amp;quot;] on GRASP from Inverhills Community College summarizes the whole points of the Creator Pattern in one slide, and also mentions about the steps of applying the pattern to the system. This slide might be a nice summary of the pattern as a whole but it's not necessarily a good place to start learning the subject. &lt;br /&gt;
&lt;br /&gt;
[http://web.njit.edu/~gblank/cis683/Larman%20Chapter%2018.ppt &amp;quot;Lecture Notes&amp;quot;] on GRASP from New Jersey Institute of Technology explains the Sale example and how creator pattern is applied in detail, this slides are again the summary of Larmann's book is mentioned above, but they summarize the book in detail so one can understand the example by looking through the slides, without actually reading the book. &lt;br /&gt;
&lt;br /&gt;
[http://www.perisic.com/oosd/design/GRASP.ppt &amp;quot;Marc Conrad&amp;quot;]'s presentation has a brief discussion on Creator Pattern, also he presents a Deposit Item example which is an easy-to-understand example. &lt;br /&gt;
&lt;br /&gt;
[http://www.christmann.ws/ucis342/class7/class7.html &amp;quot;Paul Christmann&amp;quot;]'s lecture notes on GRASP pattern, also uses the example from the Larmann's book but the example is explained in detail and where the creator pattern is applied in the system is easy-to-understand.&lt;br /&gt;
&lt;br /&gt;
[http://www.academic.marist.edu/~jzbv/SoftwareDevelopment/GRASP.ppt &amp;quot;Lecture Notes&amp;quot;] from Marist College and [http://faculty.kutztown.edu/spiegel/CSc520/PowerPoint/10_GRASP_1.ppt &amp;quot;Lecture Notes&amp;quot;] from Kutztown University uses Monopoly game example for explaining the creator pattern, even though a person who knows about this pattern can understand what the example is trying to demonstrate, but the explanation of the example can be improved.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
* &amp;quot;Wikipedia&amp;quot; http://en.wikipedia.org/wiki/GRASP_(Object_Oriented_Design)&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;David Hayden&amp;quot; http://davidhayden.com/blog/dave/archive/2004/12/06/667.aspx &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Craig Larmann, Applying UML and Pattern: An Object-Oriented Analysis and Design and the Unified Process&amp;quot; http://books.google.com/books?id=r8i-4En_aa4C&amp;amp;pg=PA228&amp;amp;lpg=PA228&amp;amp;dq=%22creator+pattern%22+example&amp;amp;source=web&amp;amp;ots=mT9HKWvlQX&amp;amp;sig=zsygR_-22hq9SfNOQLSiAaEExy8#PPA216,M1 &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes on GRASP from Augustana College&amp;quot; http://www.augustana.ab.ca/~mohrj/courses/2003.fall/csc220/lecture_notes/responsibilities.html &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes on GRASP from Worcester Polytechnic Institute&amp;quot; http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/pdf/CS4233%20Class%204.pdf &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes on GRASP from Napier University Edinburgh&amp;quot; http://www.soc.napier.ac.uk/module.php3?op=getresource&amp;amp;cloaking=no&amp;amp;resourceid=5938601 &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes on GRASP from University of California San Diego&amp;quot; http://www.cse.ucsd.edu/classes/fa06/cse111/lectures/Lecture%206%20%20Design%20Evaluation%20and%20Intro%20to%20OO%20Patterns.ppt &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes on GRASP from Inverhills Community College&amp;quot; http://faculty.inverhills.edu/dlevitt/CS%202000%20(FP)/GRASP%20Patterns.pdf &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes on GRASP from New Jersey Institute of Technology&amp;quot; http://web.njit.edu/~gblank/cis683/Larman%20Chapter%2018.ppt &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Marc Conrad's presentation&amp;quot; http://www.perisic.com/oosd/design/GRASP.ppt&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Paul Christmann's notes&amp;quot; http://www.christmann.ws/ucis342/class7/class7.html &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes from Kutztown University&amp;quot; http://faculty.kutztown.edu/spiegel/CSc520/PowerPoint/10_GRASP_1.ppt&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes from Marist College&amp;quot; http://www.academic.marist.edu/~jzbv/SoftwareDevelopment/GRASP.ppt&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Patterns in Java&amp;quot; Vol 1 and Vol 2 - Mark Grand - Wiley Computer Publishing&lt;/div&gt;</summary>
		<author><name>Ndokuzo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Wiki3.jpg&amp;diff=9706</id>
		<title>File:Wiki3.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Wiki3.jpg&amp;diff=9706"/>
		<updated>2007-11-20T02:28:07Z</updated>

		<summary type="html">&lt;p&gt;Ndokuzo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ndokuzo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=9080</id>
		<title>CSC/ECE 517 Fall 2007/wiki3 5 ns</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=9080"/>
		<updated>2007-11-19T01:13:50Z</updated>

		<summary type="html">&lt;p&gt;Ndokuzo: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''Take the Creator pattern and catalog the information on it available on the Web. Explain how it is different from the Factory pattern. Find good descriptions and good, concise, understandable examples. Tell which you consider the best to present to a class.''&lt;br /&gt;
=GRASP=&lt;br /&gt;
GRASP stands for '''G'''eneral '''R'''esponsibility '''A'''ssignment '''S'''oftware '''P'''atterns (or '''P'''rinciples), and they are the common object-oriented design patterns or principles that assign responsibility to classes and objects.&lt;br /&gt;
Some of GRASP includes Information Expert, Creator, Controller, Low Coupling, High Cohesion, Polymorphism, Pure Fabrication, Indirection, Protected Variations.&lt;br /&gt;
&lt;br /&gt;
=What is Creator Pattern?=&lt;br /&gt;
Creator Pattern is one of the GRASP approaches, which is developed to find an answer to the question of &amp;quot;Who creates an object of class A?&amp;quot; in object-oriented systems. &lt;br /&gt;
Creator pattern suggests that&lt;br /&gt;
Class B should create an instance of Class A if&lt;br /&gt;
* B aggregates instances of A, or;&lt;br /&gt;
* B contains instances of A, or;&lt;br /&gt;
* B records instances of A, or;&lt;br /&gt;
* B closely uses instances of A, or;&lt;br /&gt;
* B has the necessary information for creating the new instance of A.&lt;br /&gt;
&lt;br /&gt;
=Creator Pattern vs Factory Pattern=&lt;br /&gt;
&lt;br /&gt;
=Information Available on the Web=&lt;br /&gt;
The Creator Pattern does not have many information on the web at all. Most of the websites that we found, use the same approach and the same example for explaining the pattern. In addition to this most of the resources explaining creator pattern online are power point documents for some course's lecture notes which are prepared to be very brief. Here, we are presenting the websites that we think they do a better job than other resources that we found online.&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/GRASP_(Object_Oriented_Design) &amp;quot;Wikipedia&amp;quot;] is one of the good places to read, to get a better understanding of what GRASP is, and what patterns and principles are included in GRASP. It also briefly explains the Creator Pattern, and how it decides that which class should create instances of another class. It provides no examples that illustrates this principle so it is not the best site for Creator Pattern online. &lt;br /&gt;
&lt;br /&gt;
[http://davidhayden.com/blog/dave/archive/2004/12/06/667.aspx &amp;quot;David Hayden&amp;quot;]'s blog on Creator Pattern is again, very brief and straightforward in describing the pattern, he also provides one simple example about adding a new DataRow to a DataTable class. &lt;br /&gt;
&lt;br /&gt;
[http://books.google.com/books?id=r8i-4En_aa4C&amp;amp;pg=PA228&amp;amp;lpg=PA228&amp;amp;dq=%22creator+pattern%22+example&amp;amp;source=web&amp;amp;ots=mT9HKWvlQX&amp;amp;sig=zsygR_-22hq9SfNOQLSiAaEExy8#PPA216,M1 &amp;quot;Craig Larmann&amp;quot;]'s book, Applying UML and Pattern: An Object-Oriented Analysis and Design and the Unified Process, is an excellent book that has a thorough explanation on Creator Pattern and other GRASPs. Some of its sections are available online through google-books. This book explains the Creator Pattern and presents an example of a system with Sale, SalesLineItem and ProductSpecification objects and it discusses how it uses Creator pattern to decide which class is responsible for creating new instances of SalesLineItem. Surprisingly, many of the sources that found online (most of them are lecture notes on object oriented design from different universities), use the example provided in this book for explaining creator pattern, so in our opinion, this is one of the best sources that one can read to learn and understand more about the Creator pattern. &lt;br /&gt;
&lt;br /&gt;
[http://www.augustana.ab.ca/~mohrj/courses/2003.fall/csc220/lecture_notes/responsibilities.html &amp;quot;Lecture Notes&amp;quot;] on GRASP from Augustana College describes the creator pattern briefly and gives the Sale example (which is originally from the book above), this website is a a good one that summarizes what is written in Craig Larmann's book, but it might not be the best place to start learning the Creator Pattern. &lt;br /&gt;
&lt;br /&gt;
[http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/pdf/CS4233%20Class%204.pdf &amp;quot;Lecture Notes&amp;quot;] on GRASP from Worcester Polytechnic Institute is the brief summary of what is explained on Creator Pattern in Craig Larmann's book.&lt;br /&gt;
&lt;br /&gt;
[http://www.soc.napier.ac.uk/module.php3?op=getresource&amp;amp;cloaking=no&amp;amp;resourceid=5938601 &amp;quot;Lecture Notes&amp;quot;] on GRASP from Napier University Edinburgh, also describes the pattern, and uses the Sale example. It also mentions briefly advantages of using this patterns and how it promotes low coupling. &lt;br /&gt;
&lt;br /&gt;
[http://www.cse.ucsd.edu/classes/fa06/cse111/lectures/Lecture%206%20%20Design%20Evaluation%20and%20Intro%20to%20OO%20Patterns.ppt &amp;quot;Lecture Notes&amp;quot;] on GRASP from University of California San Diego explains the terminology used in Creator Pattern (for example: what &amp;quot;aggregates&amp;quot; or &amp;quot;contains&amp;quot; means), it also provides a different example about DatingRequest but the slides are very brief and they only contain the sequence diagrams of the system so it is not very clear what the example is about and how creator pattern is implemented in it. &lt;br /&gt;
&lt;br /&gt;
[http://faculty.inverhills.edu/dlevitt/CS%202000%20(FP)/GRASP%20Patterns.pdf &amp;quot;Lecture Notes&amp;quot;] on GRASP from Inverhills Community College summarizes the whole points of the Creator Pattern in one slide, and also mentions about the steps of applying the pattern to the system. This slide might be a nice summary of the pattern as a whole but it's not necessarily a good place to start learning the subject. &lt;br /&gt;
&lt;br /&gt;
[http://web.njit.edu/~gblank/cis683/Larman%20Chapter%2018.ppt &amp;quot;Lecture Notes&amp;quot;] on GRASP from New Jersey Institute of Technology explains the Sale example and how creator pattern is applied in detail, this slides are again the summary of Larmann's book is mentioned above, but they summarize the book in detail so one can understand the example by looking through the slides, without actually reading the book. &lt;br /&gt;
&lt;br /&gt;
[http://www.perisic.com/oosd/design/GRASP.ppt &amp;quot;Marc Conrad&amp;quot;]'s presentation has a brief discussion on Creator Pattern, also he presents a Deposit Item example which is an easy-to-understand example. &lt;br /&gt;
&lt;br /&gt;
[http://www.christmann.ws/ucis342/class7/class7.html &amp;quot;Paul Christmann&amp;quot;]'s lecture notes on GRASP pattern, also uses the example from the Larmann's book but the example is explained in detail and where the creator pattern is applied in the system is easy-to-understand.&lt;br /&gt;
&lt;br /&gt;
[http://www.academic.marist.edu/~jzbv/SoftwareDevelopment/GRASP.ppt &amp;quot;Lecture Notes&amp;quot;] from Marist College and [http://faculty.kutztown.edu/spiegel/CSc520/PowerPoint/10_GRASP_1.ppt &amp;quot;Lecture Notes&amp;quot;] from Kutztown University uses Monopoly game example for explaining the creator pattern, even though a person who knows about this pattern can understand what the example is trying to demonstrate, but the explanation of the example can be improved.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
* &amp;quot;Wikipedia&amp;quot; http://en.wikipedia.org/wiki/GRASP_(Object_Oriented_Design)&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;David Hayden&amp;quot; http://davidhayden.com/blog/dave/archive/2004/12/06/667.aspx &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Craig Larmann, Applying UML and Pattern: An Object-Oriented Analysis and Design and the Unified Process&amp;quot; http://books.google.com/books?id=r8i-4En_aa4C&amp;amp;pg=PA228&amp;amp;lpg=PA228&amp;amp;dq=%22creator+pattern%22+example&amp;amp;source=web&amp;amp;ots=mT9HKWvlQX&amp;amp;sig=zsygR_-22hq9SfNOQLSiAaEExy8#PPA216,M1 &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes on GRASP from Augustana College&amp;quot; http://www.augustana.ab.ca/~mohrj/courses/2003.fall/csc220/lecture_notes/responsibilities.html &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes on GRASP from Worcester Polytechnic Institute&amp;quot; http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/pdf/CS4233%20Class%204.pdf &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes on GRASP from Napier University Edinburgh&amp;quot; http://www.soc.napier.ac.uk/module.php3?op=getresource&amp;amp;cloaking=no&amp;amp;resourceid=5938601 &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes on GRASP from University of California San Diego&amp;quot; http://www.cse.ucsd.edu/classes/fa06/cse111/lectures/Lecture%206%20%20Design%20Evaluation%20and%20Intro%20to%20OO%20Patterns.ppt &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes on GRASP from Inverhills Community College&amp;quot; http://faculty.inverhills.edu/dlevitt/CS%202000%20(FP)/GRASP%20Patterns.pdf &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes on GRASP from New Jersey Institute of Technology&amp;quot; http://web.njit.edu/~gblank/cis683/Larman%20Chapter%2018.ppt &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Marc Conrad's presentation&amp;quot; http://www.perisic.com/oosd/design/GRASP.ppt&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Paul Christmann's notes&amp;quot; http://www.christmann.ws/ucis342/class7/class7.html &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes from Kutztown University&amp;quot; http://faculty.kutztown.edu/spiegel/CSc520/PowerPoint/10_GRASP_1.ppt&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes from Marist College&amp;quot; http://www.academic.marist.edu/~jzbv/SoftwareDevelopment/GRASP.ppt&lt;/div&gt;</summary>
		<author><name>Ndokuzo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=9079</id>
		<title>CSC/ECE 517 Fall 2007/wiki3 5 ns</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=9079"/>
		<updated>2007-11-19T01:13:28Z</updated>

		<summary type="html">&lt;p&gt;Ndokuzo: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''Take the Creator pattern and catalog the information on it available on the Web. Explain how it is different from the Factory pattern. Find good descriptions and good, concise, understandable examples. Tell which you consider the best to present to a class.''&lt;br /&gt;
=GRASP=&lt;br /&gt;
GRASP stands for '''G'''eneral '''R'''esponsibility '''A'''ssignment '''S'''oftware '''P'''atterns (or '''P'''rinciples), and they are the common object-oriented design patterns or principles that assign responsibility to classes and objects.&lt;br /&gt;
Some of GRASP includes Information Expert, Creator, Controller, Low Coupling, High Cohesion, Polymorphism, Pure Fabrication, Indirection, Protected Variations.&lt;br /&gt;
&lt;br /&gt;
=What is Creator Pattern?=&lt;br /&gt;
Creator Pattern is one of the GRASP approaches, which is developed to find an answer to the question of &amp;quot;Who creates an object of class A?&amp;quot; in object-oriented systems. &lt;br /&gt;
Creator pattern suggests that&lt;br /&gt;
Class B should create an instance of Class A if&lt;br /&gt;
* B aggregates instances of A, or;&lt;br /&gt;
* B contains instances of A, or;&lt;br /&gt;
* B records instances of A, or;&lt;br /&gt;
* B closely uses instances of A, or;&lt;br /&gt;
* B has the necessary information for creating the new instance of A.&lt;br /&gt;
&lt;br /&gt;
=Creator Pattern vs Factory Pattern=&lt;br /&gt;
&lt;br /&gt;
=Information Available on the Web=&lt;br /&gt;
The Creator Pattern does not have many information on the web at all. Most of the websites that we found, use the same approach and the same example for explaining the pattern. In addition to this most of the resources explaining creator pattern online are power point documents for some course's lecture notes which are prepared to be very brief. Here, we are presenting the websites that we think they do a better job than other resources that we found online.&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/GRASP_(Object_Oriented_Design) &amp;quot;Wikipedia&amp;quot;] is one of the good places to read, to get a better understanding of what GRASP is, and what patterns and principles are included in GRASP. It also briefly explains the Creator Pattern, and how it decides that which class should create instances of another class. It provides no examples that illustrates this principle so it is not the best site for Creator Pattern online. &lt;br /&gt;
&lt;br /&gt;
[http://davidhayden.com/blog/dave/archive/2004/12/06/667.aspx &amp;quot;David Hayden&amp;quot;]'s blog on Creator Pattern is again, very brief and straightforward in describing the pattern, he also provides one simple example about adding a new DataRow to a DataTable class. &lt;br /&gt;
&lt;br /&gt;
[http://books.google.com/books?id=r8i-4En_aa4C&amp;amp;pg=PA228&amp;amp;lpg=PA228&amp;amp;dq=%22creator+pattern%22+example&amp;amp;source=web&amp;amp;ots=mT9HKWvlQX&amp;amp;sig=zsygR_-22hq9SfNOQLSiAaEExy8#PPA216,M1 &amp;quot;Craig Larmann&amp;quot;]'s book, Applying UML and Pattern: An Object-Oriented Analysis and Design and the Unified Process, is an excellent book that has a thorough explanation on Creator Pattern and other GRASPs. Some of its sections are available online through google-books. This book explains the Creator Pattern and presents an example of a system with Sale, SalesLineItem and ProductSpecification objects and it discusses how it uses Creator pattern to decide which class is responsible for creating new instances of SalesLineItem. Surprisingly, many of the sources that found online (most of them are lecture notes on object oriented design from different universities), use the example provided in this book for explaining creator pattern, so in our opinion, this is one of the best sources that one can read to learn and understand more about the Creator pattern. &lt;br /&gt;
&lt;br /&gt;
[http://www.augustana.ab.ca/~mohrj/courses/2003.fall/csc220/lecture_notes/responsibilities.html &amp;quot;Lecture Notes&amp;quot;] on GRASP from Augustana College describes the creator pattern briefly and gives the Sale example (which is originally from the book above), this website is a a good one that summarizes what is written in Craig Larmann's book, but it might not be the best place to start learning the Creator Pattern. &lt;br /&gt;
&lt;br /&gt;
[http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/pdf/CS4233%20Class%204.pdf &amp;quot;Lecture Notes&amp;quot;] on GRASP from Worcester Polytechnic Institute is the brief summary of what is explained on Creator Pattern in Craig Larmann's book.&lt;br /&gt;
&lt;br /&gt;
[http://www.soc.napier.ac.uk/module.php3?op=getresource&amp;amp;cloaking=no&amp;amp;resourceid=5938601 &amp;quot;Lecture Notes&amp;quot;] on GRASP from Napier University Edinburgh, also describes the pattern, and uses the Sale example. It also mentions briefly advantages of using this patterns and how it promotes low coupling. &lt;br /&gt;
&lt;br /&gt;
[http://www.cse.ucsd.edu/classes/fa06/cse111/lectures/Lecture%206%20%20Design%20Evaluation%20and%20Intro%20to%20OO%20Patterns.ppt &amp;quot;Lecture Notes&amp;quot;] on GRASP from University of California San Diego explains the terminology used in Creator Pattern (for example: what &amp;quot;aggregates&amp;quot; or &amp;quot;contains&amp;quot; means), it also provides a different example about DatingRequest but the slides are very brief and they only contain the sequence diagrams of the system so it is not very clear what the example is about and how creator pattern is implemented in it. &lt;br /&gt;
&lt;br /&gt;
[http://faculty.inverhills.edu/dlevitt/CS%202000%20(FP)/GRASP%20Patterns.pdf &amp;quot;Lecture Notes&amp;quot;] on GRASP from Inverhills Community College summarizes the whole points of the Creator Pattern in one slide, and also mentions about the steps of applying the pattern to the system. This slide might be a nice summary of the pattern as a whole but it's not necessarily a good place to start learning the subject. &lt;br /&gt;
&lt;br /&gt;
[http://web.njit.edu/~gblank/cis683/Larman%20Chapter%2018.ppt &amp;quot;Lecture Notes&amp;quot;] on GRASP from New Jersey Institute of Technology explains the Sale example and how creator pattern is applied in detail, this slides are again the summary of Larmann's book is mentioned above, but they summarize the book in detail so one can understand the example by looking through the slides, without actually reading the book. &lt;br /&gt;
&lt;br /&gt;
[http://www.perisic.com/oosd/design/GRASP.ppt &amp;quot;Marc Conrad&amp;quot;]'s presentation has a brief discussion on Creator Pattern, also he presents a Deposit Item example which is an easy-to-understand example. &lt;br /&gt;
&lt;br /&gt;
[http://www.christmann.ws/ucis342/class7/class7.html &amp;quot;Paul Christmann&amp;quot;]'s lecture notes on GRASP pattern, also uses the example from the Larmann's book but the example is explained in detail and where the creator pattern is applied in the system is easy-to-understand.&lt;br /&gt;
&lt;br /&gt;
[http://www.academic.marist.edu/~jzbv/SoftwareDevelopment/GRASP.ppt &amp;quot;Lecture Notes&amp;quot;] from Marist College and [http://faculty.kutztown.edu/spiegel/CSc520/PowerPoint/10_GRASP_1.ppt &amp;quot;Lecture Notes&amp;quot;] from Kutztown University uses Monopoly game example for explaining the creator pattern, even though a person who knows about this pattern can understand what the example is trying to demonstrate, but the explanation of the example can be improved.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
&amp;quot;Wikipedia&amp;quot; http://en.wikipedia.org/wiki/GRASP_(Object_Oriented_Design)&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;David Hayden&amp;quot; http://davidhayden.com/blog/dave/archive/2004/12/06/667.aspx &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Craig Larmann, Applying UML and Pattern: An Object-Oriented Analysis and Design and the Unified Process&amp;quot; http://books.google.com/books?id=r8i-4En_aa4C&amp;amp;pg=PA228&amp;amp;lpg=PA228&amp;amp;dq=%22creator+pattern%22+example&amp;amp;source=web&amp;amp;ots=mT9HKWvlQX&amp;amp;sig=zsygR_-22hq9SfNOQLSiAaEExy8#PPA216,M1 &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes on GRASP from Augustana College&amp;quot; http://www.augustana.ab.ca/~mohrj/courses/2003.fall/csc220/lecture_notes/responsibilities.html &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes on GRASP from Worcester Polytechnic Institute&amp;quot; http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/pdf/CS4233%20Class%204.pdf &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes on GRASP from Napier University Edinburgh&amp;quot; http://www.soc.napier.ac.uk/module.php3?op=getresource&amp;amp;cloaking=no&amp;amp;resourceid=5938601 &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes on GRASP from University of California San Diego&amp;quot; http://www.cse.ucsd.edu/classes/fa06/cse111/lectures/Lecture%206%20%20Design%20Evaluation%20and%20Intro%20to%20OO%20Patterns.ppt &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes on GRASP from Inverhills Community College&amp;quot; http://faculty.inverhills.edu/dlevitt/CS%202000%20(FP)/GRASP%20Patterns.pdf &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes on GRASP from New Jersey Institute of Technology&amp;quot; http://web.njit.edu/~gblank/cis683/Larman%20Chapter%2018.ppt &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Marc Conrad's presentation&amp;quot; http://www.perisic.com/oosd/design/GRASP.ppt&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Paul Christmann's notes&amp;quot; http://www.christmann.ws/ucis342/class7/class7.html &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes from Kutztown University&amp;quot; http://faculty.kutztown.edu/spiegel/CSc520/PowerPoint/10_GRASP_1.ppt&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Lecture Notes from Marist College&amp;quot; http://www.academic.marist.edu/~jzbv/SoftwareDevelopment/GRASP.ppt&lt;/div&gt;</summary>
		<author><name>Ndokuzo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=8995</id>
		<title>CSC/ECE 517 Fall 2007/wiki3 5 ns</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=8995"/>
		<updated>2007-11-18T22:13:29Z</updated>

		<summary type="html">&lt;p&gt;Ndokuzo: /* Information Available on the Web */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''Take the Creator pattern and catalog the information on it available on the Web. Explain how it is different from the Factory pattern. Find good descriptions and good, concise, understandable examples. Tell which you consider the best to present to a class.''&lt;br /&gt;
=GRASP=&lt;br /&gt;
GRASP stands for '''G'''eneral '''R'''esponsibility '''A'''ssignment '''S'''oftware '''P'''atterns (or '''P'''rinciples), and they are the common object-oriented design patterns or principles that assign responsibility to classes and objects.&lt;br /&gt;
Some of GRASP includes Information Expert, Creator, Controller, Low Coupling, High Cohesion, Polymorphism, Pure Fabrication, Indirection, Protected Variations.&lt;br /&gt;
&lt;br /&gt;
=What is Creator Pattern?=&lt;br /&gt;
Creator Pattern is one of the GRASP approaches, which is developed to find an answer to the question of &amp;quot;Who creates an object of class A?&amp;quot; in object-oriented systems. &lt;br /&gt;
Creator pattern suggests that&lt;br /&gt;
Class B should create an instance of Class A if&lt;br /&gt;
* B aggregates instances of A, or;&lt;br /&gt;
* B contains instances of A, or;&lt;br /&gt;
* B records instances of A, or;&lt;br /&gt;
* B closely uses instances of A, or;&lt;br /&gt;
* B has the necessary information for creating the new instance of A.&lt;br /&gt;
&lt;br /&gt;
=Creator Pattern vs Factory Pattern=&lt;br /&gt;
&lt;br /&gt;
=Information Available on the Web=&lt;br /&gt;
The Creator Pattern does not have many information on the web at all. Most of the websites that we found, use the same approach and the same example for explaining the pattern. In addition to this most of the resources explaining creator pattern online are power point documents for some course's lecture notes which are prepared to be very brief. Here, we are presenting the websites that we think they do a better job than other resources that we found online.&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/GRASP_(Object_Oriented_Design) &amp;quot;Wikipedia&amp;quot;] is one of the good places to read, to get a better understanding of what GRASP is, and what patterns and principles are included in GRASP. It also briefly explains the Creator Pattern, and how it decides that which class should create instances of another class. It provides no examples that illustrates this principle so it is not the best site for Creator Pattern online. &lt;br /&gt;
&lt;br /&gt;
[http://davidhayden.com/blog/dave/archive/2004/12/06/667.aspx &amp;quot;David Hayden&amp;quot;]'s blog on Creator Pattern is again, very brief and straightforward in describing the pattern, he also provides one simple example about adding a new DataRow to a DataTable class. &lt;br /&gt;
&lt;br /&gt;
[http://books.google.com/books?id=r8i-4En_aa4C&amp;amp;pg=PA228&amp;amp;lpg=PA228&amp;amp;dq=%22creator+pattern%22+example&amp;amp;source=web&amp;amp;ots=mT9HKWvlQX&amp;amp;sig=zsygR_-22hq9SfNOQLSiAaEExy8#PPA216,M1 &amp;quot;Craig Larmann&amp;quot;]'s book, Applying UML and Pattern: An Object-Oriented Analysis and Design and the Unified Process, is an excellent book that has a thorough explanation on Creator Pattern and other GRASPs. Some of its sections are available online through google-books. This book explains the Creator Pattern and presents an example of a system with Sale, SalesLineItem and ProductSpecification objects and it discusses how it uses Creator pattern to decide which class is responsible for creating new instances of SalesLineItem. Surprisingly, many of the sources that found online (most of them are lecture notes on object oriented design from different universities), use the example provided in this book for explaining creator pattern, so in our opinion, this is one of the best sources that one can read to learn and understand more about the Creator pattern. &lt;br /&gt;
&lt;br /&gt;
[http://www.augustana.ab.ca/~mohrj/courses/2003.fall/csc220/lecture_notes/responsibilities.html &amp;quot;Lecture Notes&amp;quot;] on GRASP from Augustana College describes the creator pattern briefly and gives the Sale example (which is originally from the book above), this website is a a good one that summarizes what is written in Craig Larmann's book, but it might not be the best place to start learning the Creator Pattern. &lt;br /&gt;
&lt;br /&gt;
[http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/pdf/CS4233%20Class%204.pdf &amp;quot;Lecture Notes&amp;quot;] on GRASP from Worcester Polytechnic Institute is the brief summary of what is explained on Creator Pattern in Craig Larmann's book.&lt;br /&gt;
&lt;br /&gt;
[http://www.soc.napier.ac.uk/module.php3?op=getresource&amp;amp;cloaking=no&amp;amp;resourceid=5938601 &amp;quot;Lecture Notes&amp;quot;] on GRASP from Napier University Edinburgh, also describes the pattern, and uses the Sale example. It also mentions briefly advantages of using this patterns and how it promotes low coupling. &lt;br /&gt;
&lt;br /&gt;
[http://www.cse.ucsd.edu/classes/fa06/cse111/lectures/Lecture%206%20%20Design%20Evaluation%20and%20Intro%20to%20OO%20Patterns.ppt &amp;quot;Lecture Notes&amp;quot;] on GRASP from University of California San Diego explains the terminology used in Creator Pattern (for example: what &amp;quot;aggregates&amp;quot; or &amp;quot;contains&amp;quot; means), it also provides a different example about DatingRequest but the slides are very brief and they only contain the sequence diagrams of the system so it is not very clear what the example is about and how creator pattern is implemented in it. &lt;br /&gt;
&lt;br /&gt;
[http://faculty.inverhills.edu/dlevitt/CS%202000%20(FP)/GRASP%20Patterns.pdf &amp;quot;Lecture Notes&amp;quot;] on GRASP from Inverhills Community College summarizes the whole points of the Creator Pattern in one slide, and also mentions about the steps of applying the pattern to the system. This slide might be a nice summary of the pattern as a whole but it's not necessarily a good place to start learning the subject. &lt;br /&gt;
&lt;br /&gt;
[http://web.njit.edu/~gblank/cis683/Larman%20Chapter%2018.ppt &amp;quot;Lecture Notes&amp;quot;] on GRASP from New Jersey Institute of Technology explains the Sale example and how creator pattern is applied in detail, this slides are again the summary of Larmann's book is mentioned above, but they summarize the book in detail so one can understand the example by looking through the slides, without actually reading the book. &lt;br /&gt;
&lt;br /&gt;
[http://www.perisic.com/oosd/design/GRASP.ppt &amp;quot;Marc Conrad&amp;quot;]'s presentation has a brief discussion on Creator Pattern, also he presents a Deposit Item example which is an easy-to-understand example. &lt;br /&gt;
&lt;br /&gt;
[http://www.christmann.ws/ucis342/class7/class7.html &amp;quot;Paul Christmann&amp;quot;]'s lecture notes on GRASP pattern, also uses the example from the Larmann's book but the example is explained in detail and where the creator pattern is applied in the system is easy-to-understand.&lt;br /&gt;
&lt;br /&gt;
[http://www.academic.marist.edu/~jzbv/SoftwareDevelopment/GRASP.ppt &amp;quot;Lecture Notes&amp;quot;] from Marist College and [http://faculty.kutztown.edu/spiegel/CSc520/PowerPoint/10_GRASP_1.ppt &amp;quot;Lecture Notes&amp;quot;] from Kutztown University uses Monopoly game example for explaining the creator pattern, even though a person who knows about this pattern can understand what the example is trying to demonstrate, but the explanation of the example can be improved.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
&amp;quot;Wikipedia&amp;quot; http://en.wikipedia.org/wiki/GRASP_(Object_Oriented_Design)&lt;br /&gt;
&lt;br /&gt;
&amp;quot;David Hayden&amp;quot; http://davidhayden.com/blog/dave/archive/2004/12/06/667.aspx &lt;br /&gt;
&lt;br /&gt;
&amp;quot;Craig Larmann, Applying UML and Pattern: An Object-Oriented Analysis and Design and the Unified Process&amp;quot; http://books.google.com/books?id=r8i-4En_aa4C&amp;amp;pg=PA228&amp;amp;lpg=PA228&amp;amp;dq=%22creator+pattern%22+example&amp;amp;source=web&amp;amp;ots=mT9HKWvlQX&amp;amp;sig=zsygR_-22hq9SfNOQLSiAaEExy8#PPA216,M1 &lt;br /&gt;
&lt;br /&gt;
&amp;quot;Lecture Notes on GRASP from Augustana College&amp;quot; http://www.augustana.ab.ca/~mohrj/courses/2003.fall/csc220/lecture_notes/responsibilities.html &lt;br /&gt;
&lt;br /&gt;
&amp;quot;Lecture Notes on GRASP from Worcester Polytechnic Institute&amp;quot; http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/pdf/CS4233%20Class%204.pdf &lt;br /&gt;
&lt;br /&gt;
&amp;quot;Lecture Notes on GRASP from Napier University Edinburgh&amp;quot; http://www.soc.napier.ac.uk/module.php3?op=getresource&amp;amp;cloaking=no&amp;amp;resourceid=5938601 &lt;br /&gt;
&lt;br /&gt;
&amp;quot;Lecture Notes on GRASP from University of California San Diego&amp;quot; http://www.cse.ucsd.edu/classes/fa06/cse111/lectures/Lecture%206%20%20Design%20Evaluation%20and%20Intro%20to%20OO%20Patterns.ppt &lt;br /&gt;
&lt;br /&gt;
&amp;quot;Lecture Notes on GRASP from Inverhills Community College&amp;quot; http://faculty.inverhills.edu/dlevitt/CS%202000%20(FP)/GRASP%20Patterns.pdf &lt;br /&gt;
&lt;br /&gt;
&amp;quot;Lecture Notes on GRASP from New Jersey Institute of Technology&amp;quot; http://web.njit.edu/~gblank/cis683/Larman%20Chapter%2018.ppt &lt;br /&gt;
&lt;br /&gt;
&amp;quot;Marc Conrad's presentation&amp;quot; http://www.perisic.com/oosd/design/GRASP.ppt&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Paul Christmann's notes&amp;quot; http://www.christmann.ws/ucis342/class7/class7.html &lt;br /&gt;
&lt;br /&gt;
&amp;quot;Lecture Notes from Kutztown University&amp;quot; http://faculty.kutztown.edu/spiegel/CSc520/PowerPoint/10_GRASP_1.ppt&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Lecture Notes from Marist College&amp;quot; http://www.academic.marist.edu/~jzbv/SoftwareDevelopment/GRASP.ppt&lt;/div&gt;</summary>
		<author><name>Ndokuzo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=8993</id>
		<title>CSC/ECE 517 Fall 2007/wiki3 5 ns</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=8993"/>
		<updated>2007-11-18T22:12:40Z</updated>

		<summary type="html">&lt;p&gt;Ndokuzo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''Take the Creator pattern and catalog the information on it available on the Web. Explain how it is different from the Factory pattern. Find good descriptions and good, concise, understandable examples. Tell which you consider the best to present to a class.''&lt;br /&gt;
=GRASP=&lt;br /&gt;
GRASP stands for '''G'''eneral '''R'''esponsibility '''A'''ssignment '''S'''oftware '''P'''atterns (or '''P'''rinciples), and they are the common object-oriented design patterns or principles that assign responsibility to classes and objects.&lt;br /&gt;
Some of GRASP includes Information Expert, Creator, Controller, Low Coupling, High Cohesion, Polymorphism, Pure Fabrication, Indirection, Protected Variations.&lt;br /&gt;
&lt;br /&gt;
=What is Creator Pattern?=&lt;br /&gt;
Creator Pattern is one of the GRASP approaches, which is developed to find an answer to the question of &amp;quot;Who creates an object of class A?&amp;quot; in object-oriented systems. &lt;br /&gt;
Creator pattern suggests that&lt;br /&gt;
Class B should create an instance of Class A if&lt;br /&gt;
* B aggregates instances of A, or;&lt;br /&gt;
* B contains instances of A, or;&lt;br /&gt;
* B records instances of A, or;&lt;br /&gt;
* B closely uses instances of A, or;&lt;br /&gt;
* B has the necessary information for creating the new instance of A.&lt;br /&gt;
&lt;br /&gt;
=Creator Pattern vs Factory Pattern=&lt;br /&gt;
&lt;br /&gt;
=Information Available on the Web=&lt;br /&gt;
The Creator Pattern does not have many information on the web at all. Most of the websites that we found, use the same approach and the same example for explaining the pattern. In addition to this most of the resources explaining creator pattern online are power point documents for some course's lecture notes which are prepared to be very brief. Here, we are presenting the websites that we think they do a better job than other resources that we found online.&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/GRASP_(Object_Oriented_Design) &amp;quot;Wikipedia&amp;quot;] is one of the good places to read, to get a better understanding of what GRASP is, and what patterns and principles are included in GRASP. It also briefly explains the Creator Pattern, and how it decides that which class should create instances of another class. It provides no examples that illustrates this principle so it is not the best site for Creator Pattern online. &lt;br /&gt;
&lt;br /&gt;
[http://davidhayden.com/blog/dave/archive/2004/12/06/667.aspx &amp;quot;David Hayden&amp;quot;]'s blog on Creator Pattern is again, very brief and straightforward in describing the pattern, he also provides one simple example about adding a new DataRow to a DataTable class. &lt;br /&gt;
&lt;br /&gt;
[http://books.google.com/books?id=r8i-4En_aa4C&amp;amp;pg=PA228&amp;amp;lpg=PA228&amp;amp;dq=%22creator+pattern%22+example&amp;amp;source=web&amp;amp;ots=mT9HKWvlQX&amp;amp;sig=zsygR_-22hq9SfNOQLSiAaEExy8#PPA216,M1 &amp;quot;Craig Larmann&amp;quot;]'s book, Applying UML and Pattern: An Object-Oriented Analysis and Design and the Unified Process, is an excellent book that has a thorough explanation on Creator Pattern and other GRASPs. Some of its sections are available online through google-books. This book explains the Creator Pattern and presents an example of a system with Sale, SalesLineItem and ProductSpecification objects and it discusses how it uses Creator pattern to decide which class is responsible for creating new instances of SalesLineItem. Surprisingly, many of the sources that found online (most of them are lecture notes on object oriented design from different universities), use the example provided in this book for explaining creator pattern, so in our opinion, this is one of the best sources that one can read to learn and understand more about the Creator pattern. &lt;br /&gt;
&lt;br /&gt;
[http://www.augustana.ab.ca/~mohrj/courses/2003.fall/csc220/lecture_notes/responsibilities.html &amp;quot;Lecture Notes&amp;quot;] on GRASP from Augustana College describes the creator pattern briefly and gives the Sale example (which is originally from the book above), this website is a a good one that summarizes what is written in Craig Larmann's book, but it might not be the best place to start learning the Creator Pattern. &lt;br /&gt;
&lt;br /&gt;
[http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/pdf/CS4233%20Class%204.pdf &amp;quot;Lecture Notes&amp;quot;] on GRASP from Worcester Polytechnic Institute is the brief summary of what is explained on Creator Pattern in Craig Larmann's book.&lt;br /&gt;
&lt;br /&gt;
[http://www.soc.napier.ac.uk/module.php3?op=getresource&amp;amp;cloaking=no&amp;amp;resourceid=5938601 &amp;quot;Lecture Notes&amp;quot;] on GRASP from Napier University Edinburgh, also describes the pattern, and uses the Sale example. It also mentions briefly advantages of using this patterns and how it promotes low coupling. &lt;br /&gt;
&lt;br /&gt;
[http://www.cse.ucsd.edu/classes/fa06/cse111/lectures/Lecture%206%20%20Design%20Evaluation%20and%20Intro%20to%20OO%20Patterns.ppt &amp;quot;Lecture Notes&amp;quot;] on GRASP from University of California San Diego explains the terminology used in Creator Pattern (for example: what &amp;quot;aggregates&amp;quot; or &amp;quot;contains&amp;quot; means), it also provides a different example about DatingRequest but the slides are very brief and they only contain the sequence diagrams of the system so it is not very clear what the example is about and how creator pattern is implemented in it. &lt;br /&gt;
&lt;br /&gt;
[http://faculty.inverhills.edu/dlevitt/CS%202000%20(FP)/GRASP%20Patterns.pdf &amp;quot;Lecture Notes&amp;quot;] on GRASP from Inverhills Community College summarizes the whole points of the Creator Pattern in one slide, and also mentions about the steps of applying the pattern to the system. This slide might be a nice summary of the pattern as a whole but it's not necessarily a good place to start learning the subject. &lt;br /&gt;
&lt;br /&gt;
[http://web.njit.edu/~gblank/cis683/Larman%20Chapter%2018.ppt &amp;quot;Lecture Notes&amp;quot;] on GRASP from New Jersey Institute of Technology explains the Sale example and how creator pattern is applied in detail, this slides are again the summary of Larmann's book is mentioned above, but they summarize the book in detail so one can understand the example by looking through the slides, without actually reading the book. &lt;br /&gt;
&lt;br /&gt;
[http://www.perisic.com/oosd/design/GRASP.ppt &amp;quot;Marc Conrad&amp;quot;]'s presentation has a brief discussion on Creator Pattern, also he presents a Deposit Item example which is an easy-to-understand example. &lt;br /&gt;
&lt;br /&gt;
[http://www.christmann.ws/ucis342/class7/class7.html &amp;quot;Paul Christmann&amp;quot;]'s lecture notes on GRASP pattern, also uses the example from the Larmann's book but the example is explained in detail and where the creator pattern is applied in the system is easy-to-understand.&lt;br /&gt;
&lt;br /&gt;
[http://www.academic.marist.edu/~jzbv/SoftwareDevelopment/GRASP.ppt &amp;quot;Lecture Notes&amp;quot;] from Marist College and [http://faculty.kutztown.edu/spiegel/CSc520/PowerPoint/10_GRASP_1.ppt &amp;quot;Lecture Notes&amp;quot;] from Kutztown University uses Monopoly game example for explaining the creator pattern, even though a person who knows about this pattern can understand what the example is trying to demonstrate, the explanation of the example can be improved.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
&amp;quot;Wikipedia&amp;quot; http://en.wikipedia.org/wiki/GRASP_(Object_Oriented_Design)&lt;br /&gt;
&lt;br /&gt;
&amp;quot;David Hayden&amp;quot; http://davidhayden.com/blog/dave/archive/2004/12/06/667.aspx &lt;br /&gt;
&lt;br /&gt;
&amp;quot;Craig Larmann, Applying UML and Pattern: An Object-Oriented Analysis and Design and the Unified Process&amp;quot; http://books.google.com/books?id=r8i-4En_aa4C&amp;amp;pg=PA228&amp;amp;lpg=PA228&amp;amp;dq=%22creator+pattern%22+example&amp;amp;source=web&amp;amp;ots=mT9HKWvlQX&amp;amp;sig=zsygR_-22hq9SfNOQLSiAaEExy8#PPA216,M1 &lt;br /&gt;
&lt;br /&gt;
&amp;quot;Lecture Notes on GRASP from Augustana College&amp;quot; http://www.augustana.ab.ca/~mohrj/courses/2003.fall/csc220/lecture_notes/responsibilities.html &lt;br /&gt;
&lt;br /&gt;
&amp;quot;Lecture Notes on GRASP from Worcester Polytechnic Institute&amp;quot; http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/pdf/CS4233%20Class%204.pdf &lt;br /&gt;
&lt;br /&gt;
&amp;quot;Lecture Notes on GRASP from Napier University Edinburgh&amp;quot; http://www.soc.napier.ac.uk/module.php3?op=getresource&amp;amp;cloaking=no&amp;amp;resourceid=5938601 &lt;br /&gt;
&lt;br /&gt;
&amp;quot;Lecture Notes on GRASP from University of California San Diego&amp;quot; http://www.cse.ucsd.edu/classes/fa06/cse111/lectures/Lecture%206%20%20Design%20Evaluation%20and%20Intro%20to%20OO%20Patterns.ppt &lt;br /&gt;
&lt;br /&gt;
&amp;quot;Lecture Notes on GRASP from Inverhills Community College&amp;quot; http://faculty.inverhills.edu/dlevitt/CS%202000%20(FP)/GRASP%20Patterns.pdf &lt;br /&gt;
&lt;br /&gt;
&amp;quot;Lecture Notes on GRASP from New Jersey Institute of Technology&amp;quot; http://web.njit.edu/~gblank/cis683/Larman%20Chapter%2018.ppt &lt;br /&gt;
&lt;br /&gt;
&amp;quot;Marc Conrad's presentation&amp;quot; http://www.perisic.com/oosd/design/GRASP.ppt&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Paul Christmann's notes&amp;quot; http://www.christmann.ws/ucis342/class7/class7.html &lt;br /&gt;
&lt;br /&gt;
&amp;quot;Lecture Notes from Kutztown University&amp;quot; http://faculty.kutztown.edu/spiegel/CSc520/PowerPoint/10_GRASP_1.ppt&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Lecture Notes from Marist College&amp;quot; http://www.academic.marist.edu/~jzbv/SoftwareDevelopment/GRASP.ppt&lt;/div&gt;</summary>
		<author><name>Ndokuzo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=8991</id>
		<title>CSC/ECE 517 Fall 2007/wiki3 5 ns</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=8991"/>
		<updated>2007-11-18T22:10:40Z</updated>

		<summary type="html">&lt;p&gt;Ndokuzo: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''Take the Creator pattern and catalog the information on it available on the Web. Explain how it is different from the Factory pattern. Find good descriptions and good, concise, understandable examples. Tell which you consider the best to present to a class.''&lt;br /&gt;
=GRASP=&lt;br /&gt;
GRASP stands for '''G'''eneral '''R'''esponsibility '''A'''ssignment '''S'''oftware '''P'''atterns (or '''P'''rinciples), and they are the common object-oriented design patterns or principles that assign responsibility to classes and objects.&lt;br /&gt;
Some of GRASP includes Information Expert, Creator, Controller, Low Coupling, High Cohesion, Polymorphism, Pure Fabrication, Indirection, Protected Variations.&lt;br /&gt;
&lt;br /&gt;
=What is Creator Pattern?=&lt;br /&gt;
Creator Pattern is one of the GRASP approaches, which is developed to find an answer to the question of &amp;quot;Who creates an object of class A?&amp;quot; in object-oriented systems. &lt;br /&gt;
Creator pattern suggests that&lt;br /&gt;
Class B should create an instance of Class A if&lt;br /&gt;
* B aggregates instances of A, or;&lt;br /&gt;
* B contains instances of A, or;&lt;br /&gt;
* B records instances of A, or;&lt;br /&gt;
* B closely uses instances of A, or;&lt;br /&gt;
* B has the necessary information for creating the new instance of A.&lt;br /&gt;
&lt;br /&gt;
=Creator Pattern vs Factory Pattern=&lt;br /&gt;
&lt;br /&gt;
=Information Available on the Web=&lt;br /&gt;
The Creator Pattern does not have many information on the web at all. Most of the websites that we found, use the same approach and the same example for explaining the pattern. In addition to this most of the resources explaining creator pattern online are power point documents for some course's lecture notes which are prepared to be very brief. Here, we are presenting the websites that we think they do a better job than other resources that we found online.&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/GRASP_(Object_Oriented_Design) &amp;quot;Wikipedia&amp;quot;] is one of the good places to read, to get a better understanding of what GRASP is, and what patterns and principles are included in GRASP. It also briefly explains the Creator Pattern, and how it decides that which class should create instances of another class. It provides no examples that illustrates this principle so it is not the best site for Creator Pattern online. &lt;br /&gt;
&lt;br /&gt;
[http://davidhayden.com/blog/dave/archive/2004/12/06/667.aspx &amp;quot;David Hayden&amp;quot;]'s blog on Creator Pattern is again, very brief and straightforward in describing the pattern, he also provides one simple example about adding a new DataRow to a DataTable class. &lt;br /&gt;
&lt;br /&gt;
[http://books.google.com/books?id=r8i-4En_aa4C&amp;amp;pg=PA228&amp;amp;lpg=PA228&amp;amp;dq=%22creator+pattern%22+example&amp;amp;source=web&amp;amp;ots=mT9HKWvlQX&amp;amp;sig=zsygR_-22hq9SfNOQLSiAaEExy8#PPA216,M1 &amp;quot;Craig Larmann&amp;quot;]'s book, Applying UML and Pattern: An Object-Oriented Analysis and Design and the Unified Process, is an excellent book that has a thorough explanation on Creator Pattern and other GRASPs. Some of its sections are available online through google-books. This book explains the Creator Pattern and presents an example of a system with Sale, SalesLineItem and ProductSpecification objects and it discusses how it uses Creator pattern to decide which class is responsible for creating new instances of SalesLineItem. Surprisingly, many of the sources that found online (most of them are lecture notes on object oriented design from different universities), use the example provided in this book for explaining creator pattern, so in our opinion, this is one of the best sources that one can read to learn and understand more about the Creator pattern. &lt;br /&gt;
&lt;br /&gt;
[http://www.augustana.ab.ca/~mohrj/courses/2003.fall/csc220/lecture_notes/responsibilities.html &amp;quot;Lecture Notes&amp;quot;] on GRASP from Augustana College describes the creator pattern briefly and gives the Sale example (which is originally from the book above), this website is a a good one that summarizes what is written in Craig Larmann's book, but it might not be the best place to start learning the Creator Pattern. &lt;br /&gt;
&lt;br /&gt;
[http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/pdf/CS4233%20Class%204.pdf &amp;quot;Lecture Notes&amp;quot;] on GRASP from Worcester Polytechnic Institute is the brief summary of what is explained on Creator Pattern in Craig Larmann's book.&lt;br /&gt;
&lt;br /&gt;
[http://www.soc.napier.ac.uk/module.php3?op=getresource&amp;amp;cloaking=no&amp;amp;resourceid=5938601 &amp;quot;Lecture Notes&amp;quot;] on GRASP from Napier University Edinburgh, also describes the pattern, and uses the Sale example. It also mentions briefly advantages of using this patterns and how it promotes low coupling. &lt;br /&gt;
&lt;br /&gt;
[http://www.cse.ucsd.edu/classes/fa06/cse111/lectures/Lecture%206%20%20Design%20Evaluation%20and%20Intro%20to%20OO%20Patterns.ppt &amp;quot;Lecture Notes&amp;quot;] on GRASP from University of California San Diego explains the terminology used in Creator Pattern (for example: what &amp;quot;aggregates&amp;quot; or &amp;quot;contains&amp;quot; means), it also provides a different example about DatingRequest but the slides are very brief and they only contain the sequence diagrams of the system so it is not very clear what the example is about and how creator pattern is implemented in it. &lt;br /&gt;
&lt;br /&gt;
[http://faculty.inverhills.edu/dlevitt/CS%202000%20(FP)/GRASP%20Patterns.pdf &amp;quot;Lecture Notes&amp;quot;] on GRASP from Inverhills Community College summarizes the whole points of the Creator Pattern in one slide, and also mentions about the steps of applying the pattern to the system. This slide might be a nice summary of the pattern as a whole but it's not necessarily a good place to start learning the subject. &lt;br /&gt;
&lt;br /&gt;
[http://web.njit.edu/~gblank/cis683/Larman%20Chapter%2018.ppt &amp;quot;Lecture Notes&amp;quot;] on GRASP from New Jersey Institute of Technology explains the Sale example and how creator pattern is applied in detail, this slides are again the summary of Larmann's book is mentioned above, but they summarize the book in detail so one can understand the example by looking through the slides, without actually reading the book. &lt;br /&gt;
&lt;br /&gt;
[http://www.perisic.com/oosd/design/GRASP.ppt &amp;quot;Marc Conrad&amp;quot;]'s presentation has a brief discussion on Creator Pattern, also he presents a Deposit Item example which is an easy-to-understand example. &lt;br /&gt;
&lt;br /&gt;
[http://www.christmann.ws/ucis342/class7/class7.html &amp;quot;Paul Christmann&amp;quot;]'s lecture notes on GRASP pattern, also uses the example from the Larmann's book but the example is explained in detail and where the creator pattern is applied in the system is easy-to-understand.&lt;br /&gt;
&lt;br /&gt;
[http://www.academic.marist.edu/~jzbv/SoftwareDevelopment/GRASP.ppt &amp;quot;Lecture Notes&amp;quot;] from Marist College and [http://faculty.kutztown.edu/spiegel/CSc520/PowerPoint/10_GRASP_1.ppt &amp;quot;Lecture Notes&amp;quot;] from Kutztown University uses Monopoly game example for explaining the creator pattern, even though a person who knows about this pattern can understand what the example is trying to demonstrate, the explanation of the example can be improved.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
&amp;quot;Wikipedia&amp;quot; http://en.wikipedia.org/wiki/GRASP_(Object_Oriented_Design)&lt;br /&gt;
&lt;br /&gt;
&amp;quot;David Hayden&amp;quot; http://davidhayden.com/blog/dave/archive/2004/12/06/667.aspx &lt;br /&gt;
&lt;br /&gt;
&amp;quot;Craig Larmann, Applying UML ..&amp;quot;&lt;br /&gt;
http://books.google.com/books?id=r8i-4En_aa4C&amp;amp;pg=PA228&amp;amp;lpg=PA228&amp;amp;dq=%22creator+pattern%22+example&amp;amp;source=web&amp;amp;ots=mT9HKWvlQX&amp;amp;sig=zsygR_-22hq9SfNOQLSiAaEExy8#PPA216,M1 &lt;br /&gt;
&lt;br /&gt;
&amp;quot;Lecture Notes on GRASP from Augustana College&amp;quot; http://www.augustana.ab.ca/~mohrj/courses/2003.fall/csc220/lecture_notes/responsibilities.html &lt;br /&gt;
&lt;br /&gt;
&amp;quot;Lecture Notes on GRASP from Worcester Polytechnic Institute&amp;quot; http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/pdf/CS4233%20Class%204.pdf &lt;br /&gt;
&lt;br /&gt;
&amp;quot;Lecture Notes on GRASP from Napier University Edinburgh&amp;quot; http://www.soc.napier.ac.uk/module.php3?op=getresource&amp;amp;cloaking=no&amp;amp;resourceid=5938601 &lt;br /&gt;
&lt;br /&gt;
&amp;quot;Lecture Notes on GRASP from University of California San Diego&amp;quot;&lt;br /&gt;
http://www.cse.ucsd.edu/classes/fa06/cse111/lectures/Lecture%206%20%20Design%20Evaluation%20and%20Intro%20to%20OO%20Patterns.ppt &lt;br /&gt;
&lt;br /&gt;
&amp;quot;Lecture Notes on GRASP from Inverhills Community College&amp;quot;&lt;br /&gt;
http://faculty.inverhills.edu/dlevitt/CS%202000%20(FP)/GRASP%20Patterns.pdf &lt;br /&gt;
&lt;br /&gt;
&amp;quot;Lecture Notes on GRASP from New Jersey Institute of Technology&amp;quot;&lt;br /&gt;
http://web.njit.edu/~gblank/cis683/Larman%20Chapter%2018.ppt &lt;br /&gt;
&lt;br /&gt;
&amp;quot;Marc Conrad's presentation&amp;quot; http://www.perisic.com/oosd/design/GRASP.ppt&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Paul Christmann's notes&amp;quot; http://www.christmann.ws/ucis342/class7/class7.html &lt;br /&gt;
&lt;br /&gt;
http://faculty.kutztown.edu/spiegel/CSc520/PowerPoint/10_GRASP_1.ppt&lt;br /&gt;
http://www.academic.marist.edu/~jzbv/SoftwareDevelopment/GRASP.ppt&lt;/div&gt;</summary>
		<author><name>Ndokuzo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=8988</id>
		<title>CSC/ECE 517 Fall 2007/wiki3 5 ns</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=8988"/>
		<updated>2007-11-18T22:07:08Z</updated>

		<summary type="html">&lt;p&gt;Ndokuzo: /* Information Available on the Web */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''Take the Creator pattern and catalog the information on it available on the Web. Explain how it is different from the Factory pattern. Find good descriptions and good, concise, understandable examples. Tell which you consider the best to present to a class.''&lt;br /&gt;
=GRASP=&lt;br /&gt;
GRASP stands for '''G'''eneral '''R'''esponsibility '''A'''ssignment '''S'''oftware '''P'''atterns (or '''P'''rinciples), and they are the common object-oriented design patterns or principles that assign responsibility to classes and objects.&lt;br /&gt;
Some of GRASP includes Information Expert, Creator, Controller, Low Coupling, High Cohesion, Polymorphism, Pure Fabrication, Indirection, Protected Variations.&lt;br /&gt;
&lt;br /&gt;
=What is Creator Pattern?=&lt;br /&gt;
Creator Pattern is one of the GRASP approaches, which is developed to find an answer to the question of &amp;quot;Who creates an object of class A?&amp;quot; in object-oriented systems. &lt;br /&gt;
Creator pattern suggests that&lt;br /&gt;
Class B should create an instance of Class A if&lt;br /&gt;
* B aggregates instances of A, or;&lt;br /&gt;
* B contains instances of A, or;&lt;br /&gt;
* B records instances of A, or;&lt;br /&gt;
* B closely uses instances of A, or;&lt;br /&gt;
* B has the necessary information for creating the new instance of A.&lt;br /&gt;
&lt;br /&gt;
=Creator Pattern vs Factory Pattern=&lt;br /&gt;
&lt;br /&gt;
=Information Available on the Web=&lt;br /&gt;
The Creator Pattern does not have many information on the web at all. Most of the websites that we found, use the same approach and the same example for explaining the pattern. In addition to this most of the resources explaining creator pattern online are power point documents for some course's lecture notes which are prepared to be very brief. Here, we are presenting the websites that we think they do a better job than other resources that we found online.&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/GRASP_(Object_Oriented_Design) &amp;quot;Wikipedia&amp;quot;] is one of the good places to read, to get a better understanding of what GRASP is, and what patterns and principles are included in GRASP. It also briefly explains the Creator Pattern, and how it decides that which class should create instances of another class. It provides no examples that illustrates this principle so it is not the best site for Creator Pattern online. &lt;br /&gt;
&lt;br /&gt;
[http://davidhayden.com/blog/dave/archive/2004/12/06/667.aspx &amp;quot;David Hayden&amp;quot;]'s blog on Creator Pattern is again, very brief and straightforward in describing the pattern, he also provides one simple example about adding a new DataRow to a DataTable class. &lt;br /&gt;
&lt;br /&gt;
[http://books.google.com/books?id=r8i-4En_aa4C&amp;amp;pg=PA228&amp;amp;lpg=PA228&amp;amp;dq=%22creator+pattern%22+example&amp;amp;source=web&amp;amp;ots=mT9HKWvlQX&amp;amp;sig=zsygR_-22hq9SfNOQLSiAaEExy8#PPA216,M1 &amp;quot;Craig Larmann&amp;quot;]'s book, Applying UML and Pattern: An Object-Oriented Analysis and Design and the Unified Process, is an excellent book that has a thorough explanation on Creator Pattern and other GRASPs. Some of its sections are available online through google-books. This book explains the Creator Pattern and presents an example of a system with Sale, SalesLineItem and ProductSpecification objects and it discusses how it uses Creator pattern to decide which class is responsible for creating new instances of SalesLineItem. Surprisingly, many of the sources that found online (most of them are lecture notes on object oriented design from different universities), use the example provided in this book for explaining creator pattern, so in our opinion, this is one of the best sources that one can read to learn and understand more about the Creator pattern. &lt;br /&gt;
&lt;br /&gt;
[http://www.augustana.ab.ca/~mohrj/courses/2003.fall/csc220/lecture_notes/responsibilities.html &amp;quot;Lecture Notes&amp;quot;] on GRASP from Augustana College describes the creator pattern briefly and gives the Sale example (which is originally from the book above), this website is a a good one that summarizes what is written in Craig Larmann's book, but it might not be the best place to start learning the Creator Pattern. &lt;br /&gt;
&lt;br /&gt;
[http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/pdf/CS4233%20Class%204.pdf &amp;quot;Lecture Notes&amp;quot;] on GRASP from Worcester Polytechnic Institute is the brief summary of what is explained on Creator Pattern in Craig Larmann's book.&lt;br /&gt;
&lt;br /&gt;
[http://www.soc.napier.ac.uk/module.php3?op=getresource&amp;amp;cloaking=no&amp;amp;resourceid=5938601 &amp;quot;Lecture Notes&amp;quot;] on GRASP from Napier University Edinburgh, also describes the pattern, and uses the Sale example. It also mentions briefly advantages of using this patterns and how it promotes low coupling. &lt;br /&gt;
&lt;br /&gt;
[http://www.cse.ucsd.edu/classes/fa06/cse111/lectures/Lecture%206%20%20Design%20Evaluation%20and%20Intro%20to%20OO%20Patterns.ppt &amp;quot;Lecture Notes&amp;quot;] on GRASP from University of California San Diego explains the terminology used in Creator Pattern (for example: what &amp;quot;aggregates&amp;quot; or &amp;quot;contains&amp;quot; means), it also provides a different example about DatingRequest but the slides are very brief and they only contain the sequence diagrams of the system so it is not very clear what the example is about and how creator pattern is implemented in it. &lt;br /&gt;
&lt;br /&gt;
[http://faculty.inverhills.edu/dlevitt/CS%202000%20(FP)/GRASP%20Patterns.pdf &amp;quot;Lecture Notes&amp;quot;] on GRASP from Inverhills Community College summarizes the whole points of the Creator Pattern in one slide, and also mentions about the steps of applying the pattern to the system. This slide might be a nice summary of the pattern as a whole but it's not necessarily a good place to start learning the subject. &lt;br /&gt;
&lt;br /&gt;
[http://web.njit.edu/~gblank/cis683/Larman%20Chapter%2018.ppt &amp;quot;Lecture Notes&amp;quot;] on GRASP from New Jersey Institute of Technology explains the Sale example and how creator pattern is applied in detail, this slides are again the summary of Larmann's book is mentioned above, but they summarize the book in detail so one can understand the example by looking through the slides, without actually reading the book. &lt;br /&gt;
&lt;br /&gt;
[http://www.perisic.com/oosd/design/GRASP.ppt &amp;quot;Marc Conrad&amp;quot;]'s presentation has a brief discussion on Creator Pattern, also he presents a Deposit Item example which is an easy-to-understand example. &lt;br /&gt;
&lt;br /&gt;
[http://www.christmann.ws/ucis342/class7/class7.html &amp;quot;Paul Christmann&amp;quot;]'s lecture notes on GRASP pattern, also uses the example from the Larmann's book but the example is explained in detail and where the creator pattern is applied in the system is easy-to-understand.&lt;br /&gt;
&lt;br /&gt;
[http://www.academic.marist.edu/~jzbv/SoftwareDevelopment/GRASP.ppt &amp;quot;Lecture Notes&amp;quot;] from Marist College and [http://faculty.kutztown.edu/spiegel/CSc520/PowerPoint/10_GRASP_1.ppt &amp;quot;Lecture Notes&amp;quot;] from Kutztown University uses Monopoly game example for explaining the creator pattern, even though a person who knows about this pattern can understand what the example is trying to demonstrate, the explanation of the example can be improved.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
http://en.wikipedia.org/wiki/GRASP_(Object_Oriented_Design) &amp;quot;Wikipedia&amp;quot;&lt;br /&gt;
&lt;br /&gt;
http://davidhayden.com/blog/dave/archive/2004/12/06/667.aspx &amp;quot;David Hayden&amp;quot;&lt;br /&gt;
&lt;br /&gt;
http://books.google.com/books?id=r8i-4En_aa4C&amp;amp;pg=PA228&amp;amp;lpg=PA228&amp;amp;dq=%22creator+pattern%22+example&amp;amp;source=web&amp;amp;ots=mT9HKWvlQX&amp;amp;sig=zsygR_-22hq9SfNOQLSiAaEExy8#PPA216,M1 &amp;quot;Craig Larmann&amp;quot;&lt;br /&gt;
&lt;br /&gt;
http://www.augustana.ab.ca/~mohrj/courses/2003.fall/csc220/lecture_notes/responsibilities.html &amp;quot;Lecture Notes&amp;quot;] on GRASP from Augustana College&lt;br /&gt;
&lt;br /&gt;
http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/pdf/CS4233%20Class%204.pdf &amp;quot;Lecture Notes&amp;quot;] on GRASP from Worcester Polytechnic Institute&lt;br /&gt;
&lt;br /&gt;
http://www.soc.napier.ac.uk/module.php3?op=getresource&amp;amp;cloaking=no&amp;amp;resourceid=5938601 &amp;quot;Lecture Notes&amp;quot;] on GRASP from Napier University Edinburgh&lt;br /&gt;
&lt;br /&gt;
http://www.cse.ucsd.edu/classes/fa06/cse111/lectures/Lecture%206%20%20Design%20Evaluation%20and%20Intro%20to%20OO%20Patterns.ppt &amp;quot;Lecture Notes&amp;quot; on GRASP from University of California San Diego&lt;br /&gt;
&lt;br /&gt;
http://faculty.inverhills.edu/dlevitt/CS%202000%20(FP)/GRASP%20Patterns.pdf &amp;quot;Lecture Notes&amp;quot;] on GRASP from Inverhills Community College&lt;br /&gt;
&lt;br /&gt;
http://web.njit.edu/~gblank/cis683/Larman%20Chapter%2018.ppt &amp;quot;Lecture Notes&amp;quot;] on GRASP from New Jersey Institute of Technology&lt;br /&gt;
&lt;br /&gt;
http://www.perisic.com/oosd/design/GRASP.ppt &amp;quot;Marc Conrad&amp;quot;&lt;br /&gt;
&lt;br /&gt;
http://www.christmann.ws/ucis342/class7/class7.html &amp;quot;Paul Christmann&amp;quot;&lt;br /&gt;
&lt;br /&gt;
http://faculty.kutztown.edu/spiegel/CSc520/PowerPoint/10_GRASP_1.ppt&lt;br /&gt;
http://www.academic.marist.edu/~jzbv/SoftwareDevelopment/GRASP.ppt&lt;/div&gt;</summary>
		<author><name>Ndokuzo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=8987</id>
		<title>CSC/ECE 517 Fall 2007/wiki3 5 ns</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=8987"/>
		<updated>2007-11-18T22:04:53Z</updated>

		<summary type="html">&lt;p&gt;Ndokuzo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''Take the Creator pattern and catalog the information on it available on the Web. Explain how it is different from the Factory pattern. Find good descriptions and good, concise, understandable examples. Tell which you consider the best to present to a class.''&lt;br /&gt;
=GRASP=&lt;br /&gt;
GRASP stands for '''G'''eneral '''R'''esponsibility '''A'''ssignment '''S'''oftware '''P'''atterns (or '''P'''rinciples), and they are the common object-oriented design patterns or principles that assign responsibility to classes and objects.&lt;br /&gt;
Some of GRASP includes Information Expert, Creator, Controller, Low Coupling, High Cohesion, Polymorphism, Pure Fabrication, Indirection, Protected Variations.&lt;br /&gt;
&lt;br /&gt;
=What is Creator Pattern?=&lt;br /&gt;
Creator Pattern is one of the GRASP approaches, which is developed to find an answer to the question of &amp;quot;Who creates an object of class A?&amp;quot; in object-oriented systems. &lt;br /&gt;
Creator pattern suggests that&lt;br /&gt;
Class B should create an instance of Class A if&lt;br /&gt;
* B aggregates instances of A, or;&lt;br /&gt;
* B contains instances of A, or;&lt;br /&gt;
* B records instances of A, or;&lt;br /&gt;
* B closely uses instances of A, or;&lt;br /&gt;
* B has the necessary information for creating the new instance of A.&lt;br /&gt;
&lt;br /&gt;
=Creator Pattern vs Factory Pattern=&lt;br /&gt;
&lt;br /&gt;
=Information Available on the Web=&lt;br /&gt;
The Creator Pattern does not have many information on the web at all. Most of the websites that we found, use the same approach and the same example for explaining the pattern. In addition to this most of the resources explaining creator pattern online are power point documents for some course's lecture notes which are prepared to be very brief. Here, we are presenting the websites that we think they do a better job than other resources that we found online.&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/GRASP_(Object_Oriented_Design) &amp;quot;Wikipedia&amp;quot;] is one of the good places to read, to get a better understanding of what GRASP is, and what patterns and principles are included in GRASP. It also briefly explains the Creator Pattern, and how it decides that which class should create instances of another class. It provides no examples that illustrates this principle so it is not the best site for Creator Pattern online. &lt;br /&gt;
&lt;br /&gt;
[http://davidhayden.com/blog/dave/archive/2004/12/06/667.aspx &amp;quot;David Hayden&amp;quot;]'s blog on Creator Pattern is again, very brief and straightforward in describing the pattern, he also provides one simple example about adding a new DataRow to a DataTable class. &lt;br /&gt;
&lt;br /&gt;
[http://books.google.com/books?id=r8i-4En_aa4C&amp;amp;pg=PA228&amp;amp;lpg=PA228&amp;amp;dq=%22creator+pattern%22+example&amp;amp;source=web&amp;amp;ots=mT9HKWvlQX&amp;amp;sig=zsygR_-22hq9SfNOQLSiAaEExy8#PPA216,M1 &amp;quot;Craig Larmann&amp;quot;]'s book, Applying UML and Pattern: An Object-Oriented Analysis and Design and the Unified Process, is an excellent book that has a thorough explanation on Creator Pattern and other GRASPs. Some of its sections are available online through google-books. This book explains the Creator Pattern and presents an example of a system with Sale, SalesLineItem and ProductSpecification objects and it discusses how it uses Creator pattern to decide which class is responsible for creating new instances of SalesLineItem. Surprisingly, many of the sources that found online (most of them are lecture notes on object oriented design from different universities), use the example provided in this book for explaining creator pattern, so in our opinion, this is one of the best sources that one can read to learn and understand more about the Creator pattern. &lt;br /&gt;
&lt;br /&gt;
[http://www.augustana.ab.ca/~mohrj/courses/2003.fall/csc220/lecture_notes/responsibilities.html &amp;quot;Lecture Notes&amp;quot;] on GRASP from Augustana College describes the creator pattern briefly and gives the Sale example (which is originally from the book above), this website is a a good one that summarizes what is written in Craig Larmann's book, but it might not be the best place to start learning the Creator Pattern. &lt;br /&gt;
&lt;br /&gt;
[http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/pdf/CS4233%20Class%204.pdf &amp;quot;Lecture Notes&amp;quot;] on GRASP from Worcester Polytechnic Institute is the brief summary of what is explained on Creator Pattern in Craig Larmann's book.&lt;br /&gt;
&lt;br /&gt;
[http://www.soc.napier.ac.uk/module.php3?op=getresource&amp;amp;cloaking=no&amp;amp;resourceid=5938601 &amp;quot;Lecture Notes&amp;quot;] on GRASP from Napier University Edinburgh, also describes the pattern, and uses the Sale example. It also mentions briefly advantages of using this patterns and how it promotes low coupling. &lt;br /&gt;
&lt;br /&gt;
[http://www.cse.ucsd.edu/classes/fa06/cse111/lectures/Lecture%206%20%20Design%20Evaluation%20and%20Intro%20to%20OO%20Patterns.ppt &amp;quot;Lecture Notes&amp;quot;] on GRASP from University of California San Diego explains the terminology used in Creator Pattern (for example: what &amp;quot;aggregates&amp;quot; or &amp;quot;contains&amp;quot; means), it also provides a different example about DatingRequest but the slides are very brief and they only contain the sequence diagrams of the system so it is not very clear what the example is about and how creator pattern is implemented in it. &lt;br /&gt;
&lt;br /&gt;
[http://faculty.inverhills.edu/dlevitt/CS%202000%20(FP)/GRASP%20Patterns.pdf &amp;quot;Lecture Notes&amp;quot;] on GRASP from Inverhills Community College summarizes the whole points of the Creator Pattern in one slide, and also mentions about the steps of applying the pattern to the system. This slide might be a nice summary of the pattern as a whole but it's not necessarily a good place to start learning the subject. &lt;br /&gt;
&lt;br /&gt;
[http://web.njit.edu/~gblank/cis683/Larman%20Chapter%2018.ppt &amp;quot;Lecture Notes&amp;quot;] on GRASP from New Jersey Institute of Technology explains the Sale example and how creator pattern is applied in detail, this slides are again the summary of Larmann's book is mentioned above, but they summarize the book in detail so one can understand the example by looking through the slides, without actually reading the book. &lt;br /&gt;
&lt;br /&gt;
[http://www.perisic.com/oosd/design/GRASP.ppt &amp;quot;Marc Conrad&amp;quot;]'s presentation has a brief discussion on Creator Pattern, also he presents a Deposit Item example which is an easy-to-understand example. &lt;br /&gt;
&lt;br /&gt;
[http://www.christmann.ws/ucis342/class7/class7.html &amp;quot;Paul Christmann&amp;quot;]'s lecture notes on GRASP pattern, also uses the example from the Larmann's book but the example is explained in detail and where the creator pattern is applied in the system is easy-to-understand.&lt;br /&gt;
&lt;br /&gt;
[http://www.academic.marist.edu/~jzbv/SoftwareDevelopment/GRASP.ppt] and [http://faculty.kutztown.edu/spiegel/CSc520/PowerPoint/10_GRASP_1.ppt] uses Monopoly game example for explaining the creator pattern, even though a person who knows about this pattern can understand what the example is trying to demonstrate, the explanation of the example can be improved.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
http://en.wikipedia.org/wiki/GRASP_(Object_Oriented_Design) &amp;quot;Wikipedia&amp;quot;&lt;br /&gt;
&lt;br /&gt;
http://davidhayden.com/blog/dave/archive/2004/12/06/667.aspx &amp;quot;David Hayden&amp;quot;&lt;br /&gt;
&lt;br /&gt;
http://books.google.com/books?id=r8i-4En_aa4C&amp;amp;pg=PA228&amp;amp;lpg=PA228&amp;amp;dq=%22creator+pattern%22+example&amp;amp;source=web&amp;amp;ots=mT9HKWvlQX&amp;amp;sig=zsygR_-22hq9SfNOQLSiAaEExy8#PPA216,M1 &amp;quot;Craig Larmann&amp;quot;&lt;br /&gt;
&lt;br /&gt;
http://www.augustana.ab.ca/~mohrj/courses/2003.fall/csc220/lecture_notes/responsibilities.html &amp;quot;Lecture Notes&amp;quot;] on GRASP from Augustana College&lt;br /&gt;
&lt;br /&gt;
http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/pdf/CS4233%20Class%204.pdf &amp;quot;Lecture Notes&amp;quot;] on GRASP from Worcester Polytechnic Institute&lt;br /&gt;
&lt;br /&gt;
http://www.soc.napier.ac.uk/module.php3?op=getresource&amp;amp;cloaking=no&amp;amp;resourceid=5938601 &amp;quot;Lecture Notes&amp;quot;] on GRASP from Napier University Edinburgh&lt;br /&gt;
&lt;br /&gt;
http://www.cse.ucsd.edu/classes/fa06/cse111/lectures/Lecture%206%20%20Design%20Evaluation%20and%20Intro%20to%20OO%20Patterns.ppt &amp;quot;Lecture Notes&amp;quot; on GRASP from University of California San Diego&lt;br /&gt;
&lt;br /&gt;
http://faculty.inverhills.edu/dlevitt/CS%202000%20(FP)/GRASP%20Patterns.pdf &amp;quot;Lecture Notes&amp;quot;] on GRASP from Inverhills Community College&lt;br /&gt;
&lt;br /&gt;
http://web.njit.edu/~gblank/cis683/Larman%20Chapter%2018.ppt &amp;quot;Lecture Notes&amp;quot;] on GRASP from New Jersey Institute of Technology&lt;br /&gt;
&lt;br /&gt;
http://www.perisic.com/oosd/design/GRASP.ppt &amp;quot;Marc Conrad&amp;quot;&lt;br /&gt;
&lt;br /&gt;
http://www.christmann.ws/ucis342/class7/class7.html &amp;quot;Paul Christmann&amp;quot;&lt;br /&gt;
&lt;br /&gt;
http://faculty.kutztown.edu/spiegel/CSc520/PowerPoint/10_GRASP_1.ppt&lt;br /&gt;
http://www.academic.marist.edu/~jzbv/SoftwareDevelopment/GRASP.ppt&lt;/div&gt;</summary>
		<author><name>Ndokuzo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=8986</id>
		<title>CSC/ECE 517 Fall 2007/wiki3 5 ns</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=8986"/>
		<updated>2007-11-18T22:02:05Z</updated>

		<summary type="html">&lt;p&gt;Ndokuzo: /* Information Available on the Web */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''Take the Creator pattern and catalog the information on it available on the Web. Explain how it is different from the Factory pattern. Find good descriptions and good, concise, understandable examples. Tell which you consider the best to present to a class.''&lt;br /&gt;
=GRASP=&lt;br /&gt;
GRASP stands for '''G'''eneral '''R'''esponsibility '''A'''ssignment '''S'''oftware '''P'''atterns (or '''P'''rinciples), and they are the common object-oriented design patterns or principles that assign responsibility to classes and objects.&lt;br /&gt;
Some of GRASP includes Information Expert, Creator, Controller, Low Coupling, High Cohesion, Polymorphism, Pure Fabrication, Indirection, Protected Variations.&lt;br /&gt;
&lt;br /&gt;
=What is Creator Pattern?=&lt;br /&gt;
Creator Pattern is one of the GRASP approaches, which is developed to find an answer to the question of &amp;quot;Who creates an object of class A?&amp;quot; in object-oriented systems. &lt;br /&gt;
Creator pattern suggests that&lt;br /&gt;
Class B should create an instance of Class A if&lt;br /&gt;
* B aggregates instances of A, or;&lt;br /&gt;
* B contains instances of A, or;&lt;br /&gt;
* B records instances of A, or;&lt;br /&gt;
* B closely uses instances of A, or;&lt;br /&gt;
* B has the necessary information for creating the new instance of A.&lt;br /&gt;
&lt;br /&gt;
=Creator Pattern vs Factory Pattern=&lt;br /&gt;
&lt;br /&gt;
=Information Available on the Web=&lt;br /&gt;
The Creator Pattern does not have many information on the web at all. Most of the websites that we found, use the same approach and the same example for explaining the pattern. In addition to this most of the resources explaining creator pattern online are power point documents for some course's lecture notes which are prepared to be very brief. Here, we are presenting the websites that we think they do a better job than other resources that we found online.&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/GRASP_(Object_Oriented_Design) &amp;quot;Wikipedia&amp;quot;] is one of the good places to read, to get a better understanding of what GRASP is, and what patterns and principles are included in GRASP. It also briefly explains the Creator Pattern, and how it decides that which class should create instances of another class. It provides no examples that illustrates this principle so it is not the best site for Creator Pattern online. &lt;br /&gt;
&lt;br /&gt;
[http://davidhayden.com/blog/dave/archive/2004/12/06/667.aspx &amp;quot;David Hayden&amp;quot;]'s blog on Creator Pattern is again, very brief and straightforward in describing the pattern, he also provides one simple example about adding a new DataRow to a DataTable class. &lt;br /&gt;
&lt;br /&gt;
[http://books.google.com/books?id=r8i-4En_aa4C&amp;amp;pg=PA228&amp;amp;lpg=PA228&amp;amp;dq=%22creator+pattern%22+example&amp;amp;source=web&amp;amp;ots=mT9HKWvlQX&amp;amp;sig=zsygR_-22hq9SfNOQLSiAaEExy8#PPA216,M1 &amp;quot;Craig Larmann&amp;quot;]'s book, Applying UML and Pattern: An Object-Oriented Analysis and Design and the Unified Process, is an excellent book that has a thorough explanation on Creator Pattern and other GRASPs. Some of its sections are available online through google-books. This book explains the Creator Pattern and presents an example of a system with Sale, SalesLineItem and ProductSpecification objects and it discusses how it uses Creator pattern to decide which class is responsible for creating new instances of SalesLineItem. Surprisingly, many of the sources that found online (most of them are lecture notes on object oriented design from different universities), use the example provided in this book for explaining creator pattern, so in our opinion, this is one of the best sources that one can read to learn and understand more about the Creator pattern. &lt;br /&gt;
&lt;br /&gt;
[http://www.augustana.ab.ca/~mohrj/courses/2003.fall/csc220/lecture_notes/responsibilities.html &amp;quot;Lecture Notes&amp;quot;] on GRASP from Augustana College describes the creator pattern briefly and gives the Sale example (which is originally from the book above), this website is a a good one that summarizes what is written in Craig Larmann's book, but it might not be the best place to start learning the Creator Pattern. &lt;br /&gt;
&lt;br /&gt;
[http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/pdf/CS4233%20Class%204.pdf &amp;quot;Lecture Notes&amp;quot;] on GRASP from Worcester Polytechnic Institute is the brief summary of what is explained on Creator Pattern in Craig Larmann's book.&lt;br /&gt;
&lt;br /&gt;
[http://www.soc.napier.ac.uk/module.php3?op=getresource&amp;amp;cloaking=no&amp;amp;resourceid=5938601 &amp;quot;Lecture Notes&amp;quot;] on GRASP from Napier University Edinburgh, also describes the pattern, and uses the Sale example. It also mentions briefly advantages of using this patterns and how it promotes low coupling. &lt;br /&gt;
&lt;br /&gt;
[http://www.cse.ucsd.edu/classes/fa06/cse111/lectures/Lecture%206%20%20Design%20Evaluation%20and%20Intro%20to%20OO%20Patterns.ppt &amp;quot;Lecture Notes&amp;quot;] on GRASP from University of California San Diego explains the terminology used in Creator Pattern (for example: what &amp;quot;aggregates&amp;quot; or &amp;quot;contains&amp;quot; means), it also provides a different example about DatingRequest but the slides are very brief and they only contain the sequence diagrams of the system so it is not very clear what the example is about and how creator pattern is implemented in it. &lt;br /&gt;
&lt;br /&gt;
[http://faculty.inverhills.edu/dlevitt/CS%202000%20(FP)/GRASP%20Patterns.pdf &amp;quot;Lecture Notes&amp;quot;] on GRASP from Inverhills Community College summarizes the whole points of the Creator Pattern in one slide, and also mentions about the steps of applying the pattern to the system. This slide might be a nice summary of the pattern as a whole but it's not necessarily a good place to start learning the subject. &lt;br /&gt;
&lt;br /&gt;
[http://web.njit.edu/~gblank/cis683/Larman%20Chapter%2018.ppt &amp;quot;Lecture Notes&amp;quot;] on GRASP from New Jersey Institute of Technology explains the Sale example and how creator pattern is applied in detail, this slides are again the summary of Larmann's book is mentioned above, but they summarize the book in detail so one can understand the example by looking through the slides, without actually reading the book. &lt;br /&gt;
&lt;br /&gt;
[http://www.perisic.com/oosd/design/GRASP.ppt &amp;quot;Marc Conrad&amp;quot;]'s presentation has a brief discussion on Creator Pattern, also he presents a Deposit Item example which is an easy-to-understand example. &lt;br /&gt;
&lt;br /&gt;
[http://www.christmann.ws/ucis342/class7/class7.html &amp;quot;Paul Christmann&amp;quot;]'s lecture notes on GRASP pattern, also uses the example from the Larmann's book but the example is explained in detail and where the creator pattern is applied in the system is easy-to-understand.&lt;br /&gt;
&lt;br /&gt;
[http://www.academic.marist.edu/~jzbv/SoftwareDevelopment/GRASP.ppt] and [http://faculty.kutztown.edu/spiegel/CSc520/PowerPoint/10_GRASP_1.ppt] uses Monopoly game example for explaining the creator pattern, even though a person who knows about this pattern can understand what the example is trying to demonstrate, the explanation of the example can be improved.&lt;/div&gt;</summary>
		<author><name>Ndokuzo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=8982</id>
		<title>CSC/ECE 517 Fall 2007/wiki3 5 ns</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=8982"/>
		<updated>2007-11-18T21:47:03Z</updated>

		<summary type="html">&lt;p&gt;Ndokuzo: /* Information Available on the Web */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''Take the Creator pattern and catalog the information on it available on the Web. Explain how it is different from the Factory pattern. Find good descriptions and good, concise, understandable examples. Tell which you consider the best to present to a class.''&lt;br /&gt;
=GRASP=&lt;br /&gt;
GRASP stands for '''G'''eneral '''R'''esponsibility '''A'''ssignment '''S'''oftware '''P'''atterns (or '''P'''rinciples), and they are the common object-oriented design patterns or principles that assign responsibility to classes and objects.&lt;br /&gt;
Some of GRASP includes Information Expert, Creator, Controller, Low Coupling, High Cohesion, Polymorphism, Pure Fabrication, Indirection, Protected Variations.&lt;br /&gt;
&lt;br /&gt;
=What is Creator Pattern?=&lt;br /&gt;
Creator Pattern is one of the GRASP approaches, which is developed to find an answer to the question of &amp;quot;Who creates an object of class A?&amp;quot; in object-oriented systems. &lt;br /&gt;
Creator pattern suggests that&lt;br /&gt;
Class B should create an instance of Class A if&lt;br /&gt;
* B aggregates instances of A, or;&lt;br /&gt;
* B contains instances of A, or;&lt;br /&gt;
* B records instances of A, or;&lt;br /&gt;
* B closely uses instances of A, or;&lt;br /&gt;
* B has the necessary information for creating the new instance of A.&lt;br /&gt;
&lt;br /&gt;
=Creator Pattern vs Factory Pattern=&lt;br /&gt;
&lt;br /&gt;
=Information Available on the Web=&lt;br /&gt;
The Creator Pattern, does not have many information on the web at all. Most of the websites that we found, use the same approach and the same example for explaining the pattern, in addition to this most of the resources explaining creator pattern online are power point documents for some course's lecture notes. Here, we are presenting the websites that we think they do a better job than other resources that we found online.&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/GRASP_(Object_Oriented_Design) &amp;quot;Wikipedia&amp;quot;] is one of the good places to read, to get a better understanding of what GRASP is, and what patterns and principles are included in GRASP. It also briefly explains the Creator Pattern, and how it decides that which class should create instances of another class. It provides no examples that illustrates this principle so it is not the best site for Creator Pattern online. &lt;br /&gt;
&lt;br /&gt;
[http://davidhayden.com/blog/dave/archive/2004/12/06/667.aspx &amp;quot;David Hayden&amp;quot;]'s blog on Creator Pattern is again, very brief and straightforward in describing the pattern, he also provides one simple example about adding a new DataRow to a DataTable class. &lt;br /&gt;
&lt;br /&gt;
[http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/pdf/CS4233%20Class%204.pdf &amp;quot;GRASP Class Notes&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[http://books.google.com/books?id=r8i-4En_aa4C&amp;amp;pg=PA228&amp;amp;lpg=PA228&amp;amp;dq=%22creator+pattern%22+example&amp;amp;source=web&amp;amp;ots=mT9HKWvlQX&amp;amp;sig=zsygR_-22hq9SfNOQLSiAaEExy8#PPA216,M1 &amp;quot;Craig Larmann&amp;quot;]'s book, Applying UML and Pattern: An Object-Oriented Analysis and Design and the Unified Process, is an excellent book that has a thorough explanation on Creator Pattern and other GRASPs. Some of its sections are available online through google-books. This book explains the Creator Pattern and presents an example of a system with Sale, SalesLineItem and ProductSpecification objects and it discusses how it uses Creator pattern to decide which class is responsible for creating new instances of SalesLineItem. Surprisingly, many of the sources that found online (most of them are lecture notes on object oriented design from different universities), use the example provided in this book for explaining creator pattern, so in our opinion, this is one of the best sources that one can read to learn and understand more about the Creator pattern. &lt;br /&gt;
&lt;br /&gt;
[http://www.augustana.ab.ca/~mohrj/courses/2003.fall/csc220/lecture_notes/responsibilities.html &amp;quot;Lecture Notes&amp;quot;] on GRASP from Augustana College describes the creator pattern briefly and gives the Sale example (which is originally from the book above), this website is a a good one that summarizes what is written in Craig Larmann's book, but it might not be the best place to start learning the Creator Pattern. &lt;br /&gt;
&lt;br /&gt;
[http://www.soc.napier.ac.uk/module.php3?op=getresource&amp;amp;cloaking=no&amp;amp;resourceid=5938601 &amp;quot;Lecture Notes&amp;quot;] on GRASP from Napier University Edinburgh, also describes the pattern, and uses the Sale example. It also mentions briefly advantages of using this patterns and how it promotes low coupling. &lt;br /&gt;
&lt;br /&gt;
[http://www.cse.ucsd.edu/classes/fa06/cse111/lectures/Lecture%206%20%20Design%20Evaluation%20and%20Intro%20to%20OO%20Patterns.ppt &amp;quot;Lecture Notes&amp;quot;] on GRASP from University of California San Diego explains the terminology used in Creator Pattern (for example: what &amp;quot;aggregates&amp;quot; or &amp;quot;contains&amp;quot; means), it also provides a different example about DatingRequest but the slides are very brief and they only contain the sequence diagrams of the system so it is not very clear what the example is about and how creator pattern is implemented in it. &lt;br /&gt;
&lt;br /&gt;
[http://faculty.inverhills.edu/dlevitt/CS%202000%20(FP)/GRASP%20Patterns.pdf &amp;quot;Lecture Notes&amp;quot;] on GRASP from Inverhills Community College summarizes the whole points of the Creator Pattern in one slide, and also mentions about the steps of applying the pattern to the system. This slide might be a nice summary of the pattern as a whole but it's not necessarily a good place to start learning the subject. &lt;br /&gt;
&lt;br /&gt;
[http://web.njit.edu/~gblank/cis683/Larman%20Chapter%2018.ppt &amp;quot;Lecture Notes&amp;quot;] on GRASP from New Jersey Institute of Technology explains the Sale example and how creator pattern is applied in detail, this slides are again the summary of Larmann's book is mentioned above, but they summarize the book in detail so one can understand the example by looking through the slides, without actually reading the book. &lt;br /&gt;
&lt;br /&gt;
[http://www.perisic.com/oosd/design/GRASP.ppt &amp;quot;Marc Conrad&amp;quot;]'s presentation has a brief discussion on Creator Pattern, also he presents a Deposit Item example which is an easy-to-understand example. &lt;br /&gt;
&lt;br /&gt;
[http://www.christmann.ws/ucis342/class7/class7.html &amp;quot;Paul Christmann&amp;quot;]'s lecture notes on GRASP pattern, also uses the example from the Larmann's book but the example is explained in detail and where the creator pattern is applied in the system is easy-to-understand.&lt;br /&gt;
&lt;br /&gt;
http://www.academic.marist.edu/~jzbv/SoftwareDevelopment/GRASP.ppt&lt;br /&gt;
http://class.ee.iastate.edu/berleant/home/Courses/SoftwareEngineering/CprE486fall2005/moreGRASP.pdf&lt;br /&gt;
http://faculty.kutztown.edu/spiegel/CSc520/PowerPoint/10_GRASP_1.ppt&lt;/div&gt;</summary>
		<author><name>Ndokuzo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=8980</id>
		<title>CSC/ECE 517 Fall 2007/wiki3 5 ns</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=8980"/>
		<updated>2007-11-18T20:58:23Z</updated>

		<summary type="html">&lt;p&gt;Ndokuzo: /* Information Available on the Web */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''Take the Creator pattern and catalog the information on it available on the Web. Explain how it is different from the Factory pattern. Find good descriptions and good, concise, understandable examples. Tell which you consider the best to present to a class.''&lt;br /&gt;
=GRASP=&lt;br /&gt;
GRASP stands for '''G'''eneral '''R'''esponsibility '''A'''ssignment '''S'''oftware '''P'''atterns (or '''P'''rinciples), and they are the common object-oriented design patterns or principles that assign responsibility to classes and objects.&lt;br /&gt;
Some of GRASP includes Information Expert, Creator, Controller, Low Coupling, High Cohesion, Polymorphism, Pure Fabrication, Indirection, Protected Variations.&lt;br /&gt;
&lt;br /&gt;
=What is Creator Pattern?=&lt;br /&gt;
Creator Pattern is one of the GRASP approaches, which is developed to find an answer to the question of &amp;quot;Who creates an object of class A?&amp;quot; in object-oriented systems. &lt;br /&gt;
Creator pattern suggests that&lt;br /&gt;
Class B should create an instance of Class A if&lt;br /&gt;
* B aggregates instances of A, or;&lt;br /&gt;
* B contains instances of A, or;&lt;br /&gt;
* B records instances of A, or;&lt;br /&gt;
* B closely uses instances of A, or;&lt;br /&gt;
* B has the necessary information for creating the new instance of A.&lt;br /&gt;
&lt;br /&gt;
=Creator Pattern vs Factory Pattern=&lt;br /&gt;
&lt;br /&gt;
=Information Available on the Web=&lt;br /&gt;
The Creator Pattern, does not have many information on the web at all. Most of the websites that we found, use the same approach and the same example for explaining the pattern. Here, we are presenting the websites that we think they do a better job than other resources that we found online.&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/GRASP_(Object_Oriented_Design) &amp;quot;Wikipedia&amp;quot;] is one of the good places to read, to get a better understanding of what GRASP is, and what patterns and principles are included in GRASP. It also briefly explains the Creator Pattern, and how it decides that which class should create instances of another class. It provides no examples that illustrates this principle so it is not the best site for Creator Pattern online. &lt;br /&gt;
&lt;br /&gt;
[http://davidhayden.com/blog/dave/archive/2004/12/06/667.aspx &amp;quot;David Hayden&amp;quot;]'s blog on Creator Pattern is again, very brief and straightforward in describing the pattern, he also provides one simple example about adding a new DataRow to a DataTable class. &lt;br /&gt;
&lt;br /&gt;
[http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/pdf/CS4233%20Class%204.pdf &amp;quot;GRASP Class Notes&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[http://books.google.com/books?id=r8i-4En_aa4C&amp;amp;pg=PA228&amp;amp;lpg=PA228&amp;amp;dq=%22creator+pattern%22+example&amp;amp;source=web&amp;amp;ots=mT9HKWvlQX&amp;amp;sig=zsygR_-22hq9SfNOQLSiAaEExy8#PPA216,M1 &amp;quot;Craig Larmann&amp;quot;]'s book, Applying UML and Pattern: An Object-Oriented Analysis and Design and the Unified Process, is an excellent book that has a thorough explanation on Creator Pattern and other GRASPs. Some of its sections are available online through google-books. This book explains the Creator Pattern and presents an example of a system with Sale, SalesLineItem and ProductSpecification objects and it discusses how it uses Creator pattern to decide which class is responsible for creating new instances of SalesLineItem. Surprisingly, many of the sources that found online (most of them are lecture notes on object oriented design from different universities), use the example provided in this book for explaining creator pattern, so in our opinion, this is one of the best sources that one can read to learn and understand more about the Creator pattern. &lt;br /&gt;
&lt;br /&gt;
[http://www.augustana.ab.ca/~mohrj/courses/2003.fall/csc220/lecture_notes/responsibilities.html &amp;quot;Lecture Notes&amp;quot;] on Creator Pattern from Augustana College describes the creator pattern briefly and gives the Sale example (which is originally from the book above), this website is a a good one that summarizes what is written in Craig Larmann's book, but it might not be the best place to start learning the Creator Pattern. &lt;br /&gt;
&lt;br /&gt;
http://www.cse.ucsd.edu/classes/fa06/cse111/lectures/Lecture%206%20%20Design%20Evaluation%20and%20Intro%20to%20OO%20Patterns.ppt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://class.ee.iastate.edu/berleant/home/Courses/SoftwareEngineering/CprE486fall2005/moreGRASP.pdf&lt;br /&gt;
&lt;br /&gt;
http://faculty.kutztown.edu/spiegel/CSc520/PowerPoint/10_GRASP_1.ppt&lt;br /&gt;
&lt;br /&gt;
http://www.augustana.ab.ca/~mohrj/courses/2003.fall/csc220/lecture_notes/responsibilities.html&lt;br /&gt;
&lt;br /&gt;
http://www.soc.napier.ac.uk/module.php3?op=getresource&amp;amp;cloaking=no&amp;amp;resourceid=5938601&lt;br /&gt;
&lt;br /&gt;
http://faculty.inverhills.edu/dlevitt/CS%202000%20(FP)/GRASP%20Patterns.pdf&lt;br /&gt;
&lt;br /&gt;
http://web.njit.edu/~gblank/cis683/Larman%20Chapter%2018.ppt&lt;br /&gt;
&lt;br /&gt;
http://www.academic.marist.edu/~jzbv/SoftwareDevelopment/GRASP.ppt&lt;br /&gt;
&lt;br /&gt;
http://www.perisic.com/oosd/design/GRASP.ppt&lt;br /&gt;
&lt;br /&gt;
http://www.christmann.ws/ucis342/class7/class7.html&lt;/div&gt;</summary>
		<author><name>Ndokuzo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=8979</id>
		<title>CSC/ECE 517 Fall 2007/wiki3 5 ns</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=8979"/>
		<updated>2007-11-18T20:45:40Z</updated>

		<summary type="html">&lt;p&gt;Ndokuzo: /* Information Available on the Web */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''Take the Creator pattern and catalog the information on it available on the Web. Explain how it is different from the Factory pattern. Find good descriptions and good, concise, understandable examples. Tell which you consider the best to present to a class.''&lt;br /&gt;
=GRASP=&lt;br /&gt;
GRASP stands for '''G'''eneral '''R'''esponsibility '''A'''ssignment '''S'''oftware '''P'''atterns (or '''P'''rinciples), and they are the common object-oriented design patterns or principles that assign responsibility to classes and objects.&lt;br /&gt;
Some of GRASP includes Information Expert, Creator, Controller, Low Coupling, High Cohesion, Polymorphism, Pure Fabrication, Indirection, Protected Variations.&lt;br /&gt;
&lt;br /&gt;
=What is Creator Pattern?=&lt;br /&gt;
Creator Pattern is one of the GRASP approaches, which is developed to find an answer to the question of &amp;quot;Who creates an object of class A?&amp;quot; in object-oriented systems. &lt;br /&gt;
Creator pattern suggests that&lt;br /&gt;
Class B should create an instance of Class A if&lt;br /&gt;
* B aggregates instances of A, or;&lt;br /&gt;
* B contains instances of A, or;&lt;br /&gt;
* B records instances of A, or;&lt;br /&gt;
* B closely uses instances of A, or;&lt;br /&gt;
* B has the necessary information for creating the new instance of A.&lt;br /&gt;
&lt;br /&gt;
=Creator Pattern vs Factory Pattern=&lt;br /&gt;
&lt;br /&gt;
=Information Available on the Web=&lt;br /&gt;
The Creator Pattern, does not have many information on the web at all. Most of the websites that we found, use the same approach and the same example for explaining the pattern. Here, we are presenting the websites that we think they do a better job than other resources that we found online.&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/GRASP_(Object_Oriented_Design) &amp;quot;Wikipedia&amp;quot;] is one of the good places to read, to get a better understanding of what GRASP is, and what patterns and principles are included in GRASP. It also briefly explains the Creator Pattern, and how it decides that which class should create instances of another class. It provides no examples that illustrates this principle so it is not the best site for Creator Pattern online. &lt;br /&gt;
&lt;br /&gt;
[http://davidhayden.com/blog/dave/archive/2004/12/06/667.aspx &amp;quot;David Hayden&amp;quot;]'s blog on Creator Pattern is again, very brief and straightforward in describing the pattern, he also provides one simple example about adding a new DataRow to a DataTable class. &lt;br /&gt;
&lt;br /&gt;
[http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/pdf/CS4233%20Class%204.pdf &amp;quot;GRASP Class Notes&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[http://books.google.com/books?id=r8i-4En_aa4C&amp;amp;pg=PA228&amp;amp;lpg=PA228&amp;amp;dq=%22creator+pattern%22+example&amp;amp;source=web&amp;amp;ots=mT9HKWvlQX&amp;amp;sig=zsygR_-22hq9SfNOQLSiAaEExy8#PPA216,M1 &amp;quot;Craig Larmann&amp;quot;]'s book, Applying UML and Pattern: An Object-Oriented Analysis and Design and the Unified Process, is an excellent book that has a thorough explanation on Creator Pattern and other GRASPs. Some of its sections are available online through google-books. This book explains the Creator Pattern and presents an example of a system with Sale, SalesLineItem and ProductSpecification objects and it discusses how it uses Creator pattern to decide which class is responsible for creating new instances of SalesLineItem. Surprisingly, many of the sources that found online (most of them are lecture notes on object oriented design from different universities), use the example provided in this book for explaining creator pattern, so in our opinion, this is one of the best sources that one can read to learn and understand more about the Creator pattern.  &lt;br /&gt;
&lt;br /&gt;
http://www.cse.ucsd.edu/classes/fa06/cse111/lectures/Lecture%206%20%20Design%20Evaluation%20and%20Intro%20to%20OO%20Patterns.ppt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://class.ee.iastate.edu/berleant/home/Courses/SoftwareEngineering/CprE486fall2005/moreGRASP.pdf&lt;br /&gt;
&lt;br /&gt;
http://faculty.kutztown.edu/spiegel/CSc520/PowerPoint/10_GRASP_1.ppt&lt;br /&gt;
&lt;br /&gt;
http://www.augustana.ab.ca/~mohrj/courses/2003.fall/csc220/lecture_notes/responsibilities.html&lt;br /&gt;
&lt;br /&gt;
http://www.soc.napier.ac.uk/module.php3?op=getresource&amp;amp;cloaking=no&amp;amp;resourceid=5938601&lt;br /&gt;
&lt;br /&gt;
http://faculty.inverhills.edu/dlevitt/CS%202000%20(FP)/GRASP%20Patterns.pdf&lt;br /&gt;
&lt;br /&gt;
http://web.njit.edu/~gblank/cis683/Larman%20Chapter%2018.ppt&lt;br /&gt;
&lt;br /&gt;
http://www.academic.marist.edu/~jzbv/SoftwareDevelopment/GRASP.ppt&lt;br /&gt;
&lt;br /&gt;
http://www.perisic.com/oosd/design/GRASP.ppt&lt;br /&gt;
&lt;br /&gt;
http://www.christmann.ws/ucis342/class7/class7.html&lt;/div&gt;</summary>
		<author><name>Ndokuzo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=8977</id>
		<title>CSC/ECE 517 Fall 2007/wiki3 5 ns</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=8977"/>
		<updated>2007-11-18T20:16:58Z</updated>

		<summary type="html">&lt;p&gt;Ndokuzo: /* Information Available on the Web */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''Take the Creator pattern and catalog the information on it available on the Web. Explain how it is different from the Factory pattern. Find good descriptions and good, concise, understandable examples. Tell which you consider the best to present to a class.''&lt;br /&gt;
=GRASP=&lt;br /&gt;
GRASP stands for '''G'''eneral '''R'''esponsibility '''A'''ssignment '''S'''oftware '''P'''atterns (or '''P'''rinciples), and they are the common object-oriented design patterns or principles that assign responsibility to classes and objects.&lt;br /&gt;
Some of GRASP includes Information Expert, Creator, Controller, Low Coupling, High Cohesion, Polymorphism, Pure Fabrication, Indirection, Protected Variations.&lt;br /&gt;
&lt;br /&gt;
=What is Creator Pattern?=&lt;br /&gt;
Creator Pattern is one of the GRASP approaches, which is developed to find an answer to the question of &amp;quot;Who creates an object of class A?&amp;quot; in object-oriented systems. &lt;br /&gt;
Creator pattern suggests that&lt;br /&gt;
Class B should create an instance of Class A if&lt;br /&gt;
* B aggregates instances of A, or;&lt;br /&gt;
* B contains instances of A, or;&lt;br /&gt;
* B records instances of A, or;&lt;br /&gt;
* B closely uses instances of A, or;&lt;br /&gt;
* B has the necessary information for creating the new instance of A.&lt;br /&gt;
&lt;br /&gt;
=Creator Pattern vs Factory Pattern=&lt;br /&gt;
&lt;br /&gt;
=Information Available on the Web=&lt;br /&gt;
The Creator Pattern, does not have many information on the web at all. Most of the websites that we found, use the same approach and the same example for explaining the pattern. Here, we are presenting the websites that we think they do a better job than other resources that we found online.&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/GRASP_(Object_Oriented_Design) &amp;quot;Wikipedia&amp;quot;] is one of the good places to read, to get a better understanding of what GRASP means, what patterns and principles are included in GRASP. It also briefly explains the Creator Pattern and where it is used in object oriented systems.&lt;br /&gt;
&lt;br /&gt;
[http://davidhayden.com/blog/dave/archive/2004/12/06/667.aspx &amp;quot;David Hayden&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/pdf/CS4233%20Class%204.pdf &amp;quot;GRASP Class Notes&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://class.ee.iastate.edu/berleant/home/Courses/SoftwareEngineering/CprE486fall2005/moreGRASP.pdf&lt;br /&gt;
http://www.cse.ucsd.edu/classes/fa06/cse111/lectures/Lecture%206%20%20Design%20Evaluation%20and%20Intro%20to%20OO%20Patterns.ppt&lt;br /&gt;
&lt;br /&gt;
http://books.google.com/books?id=r8i-4En_aa4C&amp;amp;pg=PA228&amp;amp;lpg=PA228&amp;amp;dq=%22creator+pattern%22+example&amp;amp;source=web&amp;amp;ots=mT9HKWvlQX&amp;amp;sig=zsygR_-22hq9SfNOQLSiAaEExy8#PPA216,M1&lt;br /&gt;
&lt;br /&gt;
http://class.ee.iastate.edu/berleant/home/Courses/SoftwareEngineering/CprE486fall2005/moreGRASP.pdf&lt;br /&gt;
&lt;br /&gt;
http://faculty.kutztown.edu/spiegel/CSc520/PowerPoint/10_GRASP_1.ppt&lt;br /&gt;
&lt;br /&gt;
http://www.augustana.ab.ca/~mohrj/courses/2003.fall/csc220/lecture_notes/responsibilities.html&lt;br /&gt;
&lt;br /&gt;
http://www.soc.napier.ac.uk/module.php3?op=getresource&amp;amp;cloaking=no&amp;amp;resourceid=5938601&lt;br /&gt;
&lt;br /&gt;
http://faculty.inverhills.edu/dlevitt/CS%202000%20(FP)/GRASP%20Patterns.pdf&lt;br /&gt;
&lt;br /&gt;
http://web.njit.edu/~gblank/cis683/Larman%20Chapter%2018.ppt&lt;br /&gt;
&lt;br /&gt;
http://www.academic.marist.edu/~jzbv/SoftwareDevelopment/GRASP.ppt&lt;br /&gt;
&lt;br /&gt;
http://www.perisic.com/oosd/design/GRASP.ppt&lt;br /&gt;
&lt;br /&gt;
http://www.christmann.ws/ucis342/class7/class7.html&lt;/div&gt;</summary>
		<author><name>Ndokuzo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=8976</id>
		<title>CSC/ECE 517 Fall 2007/wiki3 5 ns</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=8976"/>
		<updated>2007-11-18T20:16:15Z</updated>

		<summary type="html">&lt;p&gt;Ndokuzo: /* Information Available on the Web */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''Take the Creator pattern and catalog the information on it available on the Web. Explain how it is different from the Factory pattern. Find good descriptions and good, concise, understandable examples. Tell which you consider the best to present to a class.''&lt;br /&gt;
=GRASP=&lt;br /&gt;
GRASP stands for '''G'''eneral '''R'''esponsibility '''A'''ssignment '''S'''oftware '''P'''atterns (or '''P'''rinciples), and they are the common object-oriented design patterns or principles that assign responsibility to classes and objects.&lt;br /&gt;
Some of GRASP includes Information Expert, Creator, Controller, Low Coupling, High Cohesion, Polymorphism, Pure Fabrication, Indirection, Protected Variations.&lt;br /&gt;
&lt;br /&gt;
=What is Creator Pattern?=&lt;br /&gt;
Creator Pattern is one of the GRASP approaches, which is developed to find an answer to the question of &amp;quot;Who creates an object of class A?&amp;quot; in object-oriented systems. &lt;br /&gt;
Creator pattern suggests that&lt;br /&gt;
Class B should create an instance of Class A if&lt;br /&gt;
* B aggregates instances of A, or;&lt;br /&gt;
* B contains instances of A, or;&lt;br /&gt;
* B records instances of A, or;&lt;br /&gt;
* B closely uses instances of A, or;&lt;br /&gt;
* B has the necessary information for creating the new instance of A.&lt;br /&gt;
&lt;br /&gt;
=Creator Pattern vs Factory Pattern=&lt;br /&gt;
&lt;br /&gt;
=Information Available on the Web=&lt;br /&gt;
The Creator Pattern, does not have many information on the web at all. Most of the websites that we found, use the same approach and the same example for explaining the pattern. Here, we are presenting the websites that we think they do a better job than other resources that we found online.&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/GRASP_(Object_Oriented_Design), &amp;quot;Wikipedia&amp;quot;] is one of the good places to read, to get a better understanding of what GRASP means, what patterns and principles are included in GRASP. It also briefly explains the Creator Pattern and where it is used in object oriented systems.&lt;br /&gt;
&lt;br /&gt;
[http://davidhayden.com/blog/dave/archive/2004/12/06/667.aspx, &amp;quot;David Hayden&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/pdf/CS4233%20Class%204.pdf, &amp;quot;GRASP Class Notes&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://class.ee.iastate.edu/berleant/home/Courses/SoftwareEngineering/CprE486fall2005/moreGRASP.pdf&lt;br /&gt;
http://www.cse.ucsd.edu/classes/fa06/cse111/lectures/Lecture%206%20%20Design%20Evaluation%20and%20Intro%20to%20OO%20Patterns.ppt&lt;br /&gt;
&lt;br /&gt;
http://books.google.com/books?id=r8i-4En_aa4C&amp;amp;pg=PA228&amp;amp;lpg=PA228&amp;amp;dq=%22creator+pattern%22+example&amp;amp;source=web&amp;amp;ots=mT9HKWvlQX&amp;amp;sig=zsygR_-22hq9SfNOQLSiAaEExy8#PPA216,M1&lt;br /&gt;
&lt;br /&gt;
http://class.ee.iastate.edu/berleant/home/Courses/SoftwareEngineering/CprE486fall2005/moreGRASP.pdf&lt;br /&gt;
&lt;br /&gt;
http://faculty.kutztown.edu/spiegel/CSc520/PowerPoint/10_GRASP_1.ppt&lt;br /&gt;
&lt;br /&gt;
http://www.augustana.ab.ca/~mohrj/courses/2003.fall/csc220/lecture_notes/responsibilities.html&lt;br /&gt;
&lt;br /&gt;
http://www.soc.napier.ac.uk/module.php3?op=getresource&amp;amp;cloaking=no&amp;amp;resourceid=5938601&lt;br /&gt;
&lt;br /&gt;
http://faculty.inverhills.edu/dlevitt/CS%202000%20(FP)/GRASP%20Patterns.pdf&lt;br /&gt;
&lt;br /&gt;
http://web.njit.edu/~gblank/cis683/Larman%20Chapter%2018.ppt&lt;br /&gt;
&lt;br /&gt;
http://www.academic.marist.edu/~jzbv/SoftwareDevelopment/GRASP.ppt&lt;br /&gt;
&lt;br /&gt;
http://www.perisic.com/oosd/design/GRASP.ppt&lt;br /&gt;
&lt;br /&gt;
http://www.christmann.ws/ucis342/class7/class7.html&lt;/div&gt;</summary>
		<author><name>Ndokuzo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=8968</id>
		<title>CSC/ECE 517 Fall 2007/wiki3 5 ns</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=8968"/>
		<updated>2007-11-18T18:40:41Z</updated>

		<summary type="html">&lt;p&gt;Ndokuzo: /* Information Available on the Web */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''Take the Creator pattern and catalog the information on it available on the Web. Explain how it is different from the Factory pattern. Find good descriptions and good, concise, understandable examples. Tell which you consider the best to present to a class.''&lt;br /&gt;
=GRASP=&lt;br /&gt;
GRASP stands for '''G'''eneral '''R'''esponsibility '''A'''ssignment '''S'''oftware '''P'''atterns (or '''P'''rinciples), and they are the common object-oriented design patterns or principles that assign responsibility to classes and objects.&lt;br /&gt;
Some of GRASP includes Information Expert, Creator, Controller, Low Coupling, High Cohesion, Polymorphism, Pure Fabrication, Indirection, Protected Variations.&lt;br /&gt;
&lt;br /&gt;
=What is Creator Pattern?=&lt;br /&gt;
Creator Pattern is one of the GRASP approaches, which is developed to find an answer to the question of &amp;quot;Who creates an object of class A?&amp;quot; in object-oriented systems. &lt;br /&gt;
Creator pattern suggests that&lt;br /&gt;
Class B should create an instance of Class A if&lt;br /&gt;
* B aggregates instances of A, or;&lt;br /&gt;
* B contains instances of A, or;&lt;br /&gt;
* B records instances of A, or;&lt;br /&gt;
* B closely uses instances of A, or;&lt;br /&gt;
* B has the necessary information for creating the new instance of A.&lt;br /&gt;
&lt;br /&gt;
=Creator Pattern vs Factory Pattern=&lt;br /&gt;
&lt;br /&gt;
=Information Available on the Web=&lt;br /&gt;
The Creator Pattern, does not have many information on the web at all. Most of the websites that we found, use the same approach and the same example for explaining the pattern. Here, we are presenting the websites that we think they do a better job than other resources that we found online.&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/GRASP_(Object_Oriented_Design), &amp;quot;Wikipedia&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[http://davidhayden.com/blog/dave/archive/2004/12/06/667.aspx, &amp;quot;David Hayden&amp;quot;]&lt;br /&gt;
http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/maps/class4/Creator.html&lt;br /&gt;
http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/pdf/CS4233%20Class%204.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://class.ee.iastate.edu/berleant/home/Courses/SoftwareEngineering/CprE486fall2005/moreGRASP.pdf&lt;br /&gt;
http://www.cse.ucsd.edu/classes/fa06/cse111/lectures/Lecture%206%20%20Design%20Evaluation%20and%20Intro%20to%20OO%20Patterns.ppt&lt;br /&gt;
&lt;br /&gt;
http://books.google.com/books?id=r8i-4En_aa4C&amp;amp;pg=PA228&amp;amp;lpg=PA228&amp;amp;dq=%22creator+pattern%22+example&amp;amp;source=web&amp;amp;ots=mT9HKWvlQX&amp;amp;sig=zsygR_-22hq9SfNOQLSiAaEExy8#PPA216,M1&lt;br /&gt;
&lt;br /&gt;
http://class.ee.iastate.edu/berleant/home/Courses/SoftwareEngineering/CprE486fall2005/moreGRASP.pdf&lt;br /&gt;
&lt;br /&gt;
http://faculty.kutztown.edu/spiegel/CSc520/PowerPoint/10_GRASP_1.ppt&lt;br /&gt;
&lt;br /&gt;
http://www.augustana.ab.ca/~mohrj/courses/2003.fall/csc220/lecture_notes/responsibilities.html&lt;br /&gt;
&lt;br /&gt;
http://www.soc.napier.ac.uk/module.php3?op=getresource&amp;amp;cloaking=no&amp;amp;resourceid=5938601&lt;br /&gt;
&lt;br /&gt;
http://faculty.inverhills.edu/dlevitt/CS%202000%20(FP)/GRASP%20Patterns.pdf&lt;br /&gt;
&lt;br /&gt;
http://web.njit.edu/~gblank/cis683/Larman%20Chapter%2018.ppt&lt;br /&gt;
&lt;br /&gt;
http://www.academic.marist.edu/~jzbv/SoftwareDevelopment/GRASP.ppt&lt;br /&gt;
&lt;br /&gt;
http://www.perisic.com/oosd/design/GRASP.ppt&lt;br /&gt;
&lt;br /&gt;
http://www.christmann.ws/ucis342/class7/class7.html&lt;/div&gt;</summary>
		<author><name>Ndokuzo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=8967</id>
		<title>CSC/ECE 517 Fall 2007/wiki3 5 ns</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=8967"/>
		<updated>2007-11-18T18:40:30Z</updated>

		<summary type="html">&lt;p&gt;Ndokuzo: /* Information Available on the Web */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''Take the Creator pattern and catalog the information on it available on the Web. Explain how it is different from the Factory pattern. Find good descriptions and good, concise, understandable examples. Tell which you consider the best to present to a class.''&lt;br /&gt;
=GRASP=&lt;br /&gt;
GRASP stands for '''G'''eneral '''R'''esponsibility '''A'''ssignment '''S'''oftware '''P'''atterns (or '''P'''rinciples), and they are the common object-oriented design patterns or principles that assign responsibility to classes and objects.&lt;br /&gt;
Some of GRASP includes Information Expert, Creator, Controller, Low Coupling, High Cohesion, Polymorphism, Pure Fabrication, Indirection, Protected Variations.&lt;br /&gt;
&lt;br /&gt;
=What is Creator Pattern?=&lt;br /&gt;
Creator Pattern is one of the GRASP approaches, which is developed to find an answer to the question of &amp;quot;Who creates an object of class A?&amp;quot; in object-oriented systems. &lt;br /&gt;
Creator pattern suggests that&lt;br /&gt;
Class B should create an instance of Class A if&lt;br /&gt;
* B aggregates instances of A, or;&lt;br /&gt;
* B contains instances of A, or;&lt;br /&gt;
* B records instances of A, or;&lt;br /&gt;
* B closely uses instances of A, or;&lt;br /&gt;
* B has the necessary information for creating the new instance of A.&lt;br /&gt;
&lt;br /&gt;
=Creator Pattern vs Factory Pattern=&lt;br /&gt;
&lt;br /&gt;
=Information Available on the Web=&lt;br /&gt;
The Creator Pattern, does not have many information on the web at all. Most of the websites that we found, use the same approach and the same example for explaining the pattern. Here, we are presenting the websites that we think they do a better job than other resources that we found online.&lt;br /&gt;
[http://en.wikipedia.org/wiki/GRASP_(Object_Oriented_Design), &amp;quot;Wikipedia&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[http://davidhayden.com/blog/dave/archive/2004/12/06/667.aspx, &amp;quot;David Hayden&amp;quot;]&lt;br /&gt;
http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/maps/class4/Creator.html&lt;br /&gt;
http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/pdf/CS4233%20Class%204.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://class.ee.iastate.edu/berleant/home/Courses/SoftwareEngineering/CprE486fall2005/moreGRASP.pdf&lt;br /&gt;
http://www.cse.ucsd.edu/classes/fa06/cse111/lectures/Lecture%206%20%20Design%20Evaluation%20and%20Intro%20to%20OO%20Patterns.ppt&lt;br /&gt;
&lt;br /&gt;
http://books.google.com/books?id=r8i-4En_aa4C&amp;amp;pg=PA228&amp;amp;lpg=PA228&amp;amp;dq=%22creator+pattern%22+example&amp;amp;source=web&amp;amp;ots=mT9HKWvlQX&amp;amp;sig=zsygR_-22hq9SfNOQLSiAaEExy8#PPA216,M1&lt;br /&gt;
&lt;br /&gt;
http://class.ee.iastate.edu/berleant/home/Courses/SoftwareEngineering/CprE486fall2005/moreGRASP.pdf&lt;br /&gt;
&lt;br /&gt;
http://faculty.kutztown.edu/spiegel/CSc520/PowerPoint/10_GRASP_1.ppt&lt;br /&gt;
&lt;br /&gt;
http://www.augustana.ab.ca/~mohrj/courses/2003.fall/csc220/lecture_notes/responsibilities.html&lt;br /&gt;
&lt;br /&gt;
http://www.soc.napier.ac.uk/module.php3?op=getresource&amp;amp;cloaking=no&amp;amp;resourceid=5938601&lt;br /&gt;
&lt;br /&gt;
http://faculty.inverhills.edu/dlevitt/CS%202000%20(FP)/GRASP%20Patterns.pdf&lt;br /&gt;
&lt;br /&gt;
http://web.njit.edu/~gblank/cis683/Larman%20Chapter%2018.ppt&lt;br /&gt;
&lt;br /&gt;
http://www.academic.marist.edu/~jzbv/SoftwareDevelopment/GRASP.ppt&lt;br /&gt;
&lt;br /&gt;
http://www.perisic.com/oosd/design/GRASP.ppt&lt;br /&gt;
&lt;br /&gt;
http://www.christmann.ws/ucis342/class7/class7.html&lt;/div&gt;</summary>
		<author><name>Ndokuzo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=8829</id>
		<title>CSC/ECE 517 Fall 2007/wiki3 5 ns</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=8829"/>
		<updated>2007-11-17T23:08:54Z</updated>

		<summary type="html">&lt;p&gt;Ndokuzo: /* Information Available on the Web */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''Take the Creator pattern and catalog the information on it available on the Web. Explain how it is different from the Factory pattern. Find good descriptions and good, concise, understandable examples. Tell which you consider the best to present to a class.''&lt;br /&gt;
=GRASP=&lt;br /&gt;
GRASP stands for '''G'''eneral '''R'''esponsibility '''A'''ssignment '''S'''oftware '''P'''atterns (or '''P'''rinciples), and they are the common object-oriented design patterns or principles that assign responsibility to classes and objects.&lt;br /&gt;
Some of GRASP includes Information Expert, Creator, Controller, Low Coupling, High Cohesion, Polymorphism, Pure Fabrication, Indirection, Protected Variations.&lt;br /&gt;
&lt;br /&gt;
=What is Creator Pattern?=&lt;br /&gt;
Creator Pattern is one of the GRASP approaches, which is developed to find an answer to the question of &amp;quot;Who creates an object of class A?&amp;quot; in object-oriented systems. &lt;br /&gt;
Creator pattern suggests that&lt;br /&gt;
Class B should create an instance of Class A if&lt;br /&gt;
* B aggregates instances of A, or;&lt;br /&gt;
* B contains instances of A, or;&lt;br /&gt;
* B records instances of A, or;&lt;br /&gt;
* B closely uses instances of A, or;&lt;br /&gt;
* B has the necessary information for creating the new instance of A.&lt;br /&gt;
&lt;br /&gt;
=Creator Pattern vs Factory Pattern=&lt;br /&gt;
&lt;br /&gt;
=Information Available on the Web=&lt;br /&gt;
[http://en.wikipedia.org/wiki/GRASP_(Object_Oriented_Design), &amp;quot;Wikipedia&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[http://davidhayden.com/blog/dave/archive/2004/12/06/667.aspx, &amp;quot;David Hayden&amp;quot;]&lt;br /&gt;
http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/maps/class4/Creator.html&lt;br /&gt;
http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/pdf/CS4233%20Class%204.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://class.ee.iastate.edu/berleant/home/Courses/SoftwareEngineering/CprE486fall2005/moreGRASP.pdf&lt;br /&gt;
http://www.cse.ucsd.edu/classes/fa06/cse111/lectures/Lecture%206%20%20Design%20Evaluation%20and%20Intro%20to%20OO%20Patterns.ppt&lt;br /&gt;
&lt;br /&gt;
http://books.google.com/books?id=r8i-4En_aa4C&amp;amp;pg=PA228&amp;amp;lpg=PA228&amp;amp;dq=%22creator+pattern%22+example&amp;amp;source=web&amp;amp;ots=mT9HKWvlQX&amp;amp;sig=zsygR_-22hq9SfNOQLSiAaEExy8#PPA216,M1&lt;br /&gt;
&lt;br /&gt;
http://class.ee.iastate.edu/berleant/home/Courses/SoftwareEngineering/CprE486fall2005/moreGRASP.pdf&lt;br /&gt;
&lt;br /&gt;
http://faculty.kutztown.edu/spiegel/CSc520/PowerPoint/10_GRASP_1.ppt&lt;br /&gt;
&lt;br /&gt;
http://www.augustana.ab.ca/~mohrj/courses/2003.fall/csc220/lecture_notes/responsibilities.html&lt;br /&gt;
&lt;br /&gt;
http://www.soc.napier.ac.uk/module.php3?op=getresource&amp;amp;cloaking=no&amp;amp;resourceid=5938601&lt;br /&gt;
&lt;br /&gt;
http://faculty.inverhills.edu/dlevitt/CS%202000%20(FP)/GRASP%20Patterns.pdf&lt;br /&gt;
&lt;br /&gt;
http://web.njit.edu/~gblank/cis683/Larman%20Chapter%2018.ppt&lt;br /&gt;
&lt;br /&gt;
http://www.academic.marist.edu/~jzbv/SoftwareDevelopment/GRASP.ppt&lt;br /&gt;
&lt;br /&gt;
http://www.perisic.com/oosd/design/GRASP.ppt&lt;br /&gt;
&lt;br /&gt;
http://www.christmann.ws/ucis342/class7/class7.html&lt;/div&gt;</summary>
		<author><name>Ndokuzo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=8828</id>
		<title>CSC/ECE 517 Fall 2007/wiki3 5 ns</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=8828"/>
		<updated>2007-11-17T23:08:34Z</updated>

		<summary type="html">&lt;p&gt;Ndokuzo: /* Information Available on the Web */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''Take the Creator pattern and catalog the information on it available on the Web. Explain how it is different from the Factory pattern. Find good descriptions and good, concise, understandable examples. Tell which you consider the best to present to a class.''&lt;br /&gt;
=GRASP=&lt;br /&gt;
GRASP stands for '''G'''eneral '''R'''esponsibility '''A'''ssignment '''S'''oftware '''P'''atterns (or '''P'''rinciples), and they are the common object-oriented design patterns or principles that assign responsibility to classes and objects.&lt;br /&gt;
Some of GRASP includes Information Expert, Creator, Controller, Low Coupling, High Cohesion, Polymorphism, Pure Fabrication, Indirection, Protected Variations.&lt;br /&gt;
&lt;br /&gt;
=What is Creator Pattern?=&lt;br /&gt;
Creator Pattern is one of the GRASP approaches, which is developed to find an answer to the question of &amp;quot;Who creates an object of class A?&amp;quot; in object-oriented systems. &lt;br /&gt;
Creator pattern suggests that&lt;br /&gt;
Class B should create an instance of Class A if&lt;br /&gt;
* B aggregates instances of A, or;&lt;br /&gt;
* B contains instances of A, or;&lt;br /&gt;
* B records instances of A, or;&lt;br /&gt;
* B closely uses instances of A, or;&lt;br /&gt;
* B has the necessary information for creating the new instance of A.&lt;br /&gt;
&lt;br /&gt;
=Creator Pattern vs Factory Pattern=&lt;br /&gt;
&lt;br /&gt;
=Information Available on the Web=&lt;br /&gt;
[http://en.wikipedia.org/wiki/GRASP_(Object_Oriented_Design), &amp;quot;Wikipedia&amp;quot;]&lt;br /&gt;
[http://davidhayden.com/blog/dave/archive/2004/12/06/667.aspx, &amp;quot;David Hayden&amp;quot;]&lt;br /&gt;
http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/maps/class4/Creator.html&lt;br /&gt;
http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/pdf/CS4233%20Class%204.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://class.ee.iastate.edu/berleant/home/Courses/SoftwareEngineering/CprE486fall2005/moreGRASP.pdf&lt;br /&gt;
http://www.cse.ucsd.edu/classes/fa06/cse111/lectures/Lecture%206%20%20Design%20Evaluation%20and%20Intro%20to%20OO%20Patterns.ppt&lt;br /&gt;
&lt;br /&gt;
http://books.google.com/books?id=r8i-4En_aa4C&amp;amp;pg=PA228&amp;amp;lpg=PA228&amp;amp;dq=%22creator+pattern%22+example&amp;amp;source=web&amp;amp;ots=mT9HKWvlQX&amp;amp;sig=zsygR_-22hq9SfNOQLSiAaEExy8#PPA216,M1&lt;br /&gt;
&lt;br /&gt;
http://class.ee.iastate.edu/berleant/home/Courses/SoftwareEngineering/CprE486fall2005/moreGRASP.pdf&lt;br /&gt;
&lt;br /&gt;
http://faculty.kutztown.edu/spiegel/CSc520/PowerPoint/10_GRASP_1.ppt&lt;br /&gt;
&lt;br /&gt;
http://www.augustana.ab.ca/~mohrj/courses/2003.fall/csc220/lecture_notes/responsibilities.html&lt;br /&gt;
&lt;br /&gt;
http://www.soc.napier.ac.uk/module.php3?op=getresource&amp;amp;cloaking=no&amp;amp;resourceid=5938601&lt;br /&gt;
&lt;br /&gt;
http://faculty.inverhills.edu/dlevitt/CS%202000%20(FP)/GRASP%20Patterns.pdf&lt;br /&gt;
&lt;br /&gt;
http://web.njit.edu/~gblank/cis683/Larman%20Chapter%2018.ppt&lt;br /&gt;
&lt;br /&gt;
http://www.academic.marist.edu/~jzbv/SoftwareDevelopment/GRASP.ppt&lt;br /&gt;
&lt;br /&gt;
http://www.perisic.com/oosd/design/GRASP.ppt&lt;br /&gt;
&lt;br /&gt;
http://www.christmann.ws/ucis342/class7/class7.html&lt;/div&gt;</summary>
		<author><name>Ndokuzo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=8827</id>
		<title>CSC/ECE 517 Fall 2007/wiki3 5 ns</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=8827"/>
		<updated>2007-11-17T23:03:05Z</updated>

		<summary type="html">&lt;p&gt;Ndokuzo: /* Information Available on the Web */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''Take the Creator pattern and catalog the information on it available on the Web. Explain how it is different from the Factory pattern. Find good descriptions and good, concise, understandable examples. Tell which you consider the best to present to a class.''&lt;br /&gt;
=GRASP=&lt;br /&gt;
GRASP stands for '''G'''eneral '''R'''esponsibility '''A'''ssignment '''S'''oftware '''P'''atterns (or '''P'''rinciples), and they are the common object-oriented design patterns or principles that assign responsibility to classes and objects.&lt;br /&gt;
Some of GRASP includes Information Expert, Creator, Controller, Low Coupling, High Cohesion, Polymorphism, Pure Fabrication, Indirection, Protected Variations.&lt;br /&gt;
&lt;br /&gt;
=What is Creator Pattern?=&lt;br /&gt;
Creator Pattern is one of the GRASP approaches, which is developed to find an answer to the question of &amp;quot;Who creates an object of class A?&amp;quot; in object-oriented systems. &lt;br /&gt;
Creator pattern suggests that&lt;br /&gt;
Class B should create an instance of Class A if&lt;br /&gt;
* B aggregates instances of A, or;&lt;br /&gt;
* B contains instances of A, or;&lt;br /&gt;
* B records instances of A, or;&lt;br /&gt;
* B closely uses instances of A, or;&lt;br /&gt;
* B has the necessary information for creating the new instance of A.&lt;br /&gt;
&lt;br /&gt;
=Creator Pattern vs Factory Pattern=&lt;br /&gt;
&lt;br /&gt;
=Information Available on the Web=&lt;br /&gt;
[http://en.wikipedia.org/wiki/GRASP_(Object_Oriented_Design), &amp;quot;Wikipedia&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://class.ee.iastate.edu/berleant/home/Courses/SoftwareEngineering/CprE486fall2005/moreGRASP.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.cse.ucsd.edu/classes/fa06/cse111/lectures/Lecture%206%20%20Design%20Evaluation%20and%20Intro%20to%20OO%20Patterns.ppt&lt;br /&gt;
&lt;br /&gt;
http://davidhayden.com/blog/dave/archive/2004/12/06/667.aspx&lt;br /&gt;
&lt;br /&gt;
http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/maps/class4/Creator.html&lt;br /&gt;
http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/pdf/CS4233%20Class%204.pdf&lt;br /&gt;
&lt;br /&gt;
http://books.google.com/books?id=r8i-4En_aa4C&amp;amp;pg=PA228&amp;amp;lpg=PA228&amp;amp;dq=%22creator+pattern%22+example&amp;amp;source=web&amp;amp;ots=mT9HKWvlQX&amp;amp;sig=zsygR_-22hq9SfNOQLSiAaEExy8#PPA216,M1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://class.ee.iastate.edu/berleant/home/Courses/SoftwareEngineering/CprE486fall2005/moreGRASP.pdf&lt;br /&gt;
&lt;br /&gt;
http://faculty.kutztown.edu/spiegel/CSc520/PowerPoint/10_GRASP_1.ppt&lt;br /&gt;
&lt;br /&gt;
http://www.augustana.ab.ca/~mohrj/courses/2003.fall/csc220/lecture_notes/responsibilities.html&lt;br /&gt;
&lt;br /&gt;
http://www.soc.napier.ac.uk/module.php3?op=getresource&amp;amp;cloaking=no&amp;amp;resourceid=5938601&lt;br /&gt;
&lt;br /&gt;
http://faculty.inverhills.edu/dlevitt/CS%202000%20(FP)/GRASP%20Patterns.pdf&lt;br /&gt;
&lt;br /&gt;
http://web.njit.edu/~gblank/cis683/Larman%20Chapter%2018.ppt&lt;br /&gt;
&lt;br /&gt;
http://www.academic.marist.edu/~jzbv/SoftwareDevelopment/GRASP.ppt&lt;br /&gt;
&lt;br /&gt;
http://www.perisic.com/oosd/design/GRASP.ppt&lt;br /&gt;
&lt;br /&gt;
http://www.christmann.ws/ucis342/class7/class7.html&lt;/div&gt;</summary>
		<author><name>Ndokuzo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=8826</id>
		<title>CSC/ECE 517 Fall 2007/wiki3 5 ns</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=8826"/>
		<updated>2007-11-17T23:02:48Z</updated>

		<summary type="html">&lt;p&gt;Ndokuzo: /* Information Available on the Web */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''Take the Creator pattern and catalog the information on it available on the Web. Explain how it is different from the Factory pattern. Find good descriptions and good, concise, understandable examples. Tell which you consider the best to present to a class.''&lt;br /&gt;
=GRASP=&lt;br /&gt;
GRASP stands for '''G'''eneral '''R'''esponsibility '''A'''ssignment '''S'''oftware '''P'''atterns (or '''P'''rinciples), and they are the common object-oriented design patterns or principles that assign responsibility to classes and objects.&lt;br /&gt;
Some of GRASP includes Information Expert, Creator, Controller, Low Coupling, High Cohesion, Polymorphism, Pure Fabrication, Indirection, Protected Variations.&lt;br /&gt;
&lt;br /&gt;
=What is Creator Pattern?=&lt;br /&gt;
Creator Pattern is one of the GRASP approaches, which is developed to find an answer to the question of &amp;quot;Who creates an object of class A?&amp;quot; in object-oriented systems. &lt;br /&gt;
Creator pattern suggests that&lt;br /&gt;
Class B should create an instance of Class A if&lt;br /&gt;
* B aggregates instances of A, or;&lt;br /&gt;
* B contains instances of A, or;&lt;br /&gt;
* B records instances of A, or;&lt;br /&gt;
* B closely uses instances of A, or;&lt;br /&gt;
* B has the necessary information for creating the new instance of A.&lt;br /&gt;
&lt;br /&gt;
=Creator Pattern vs Factory Pattern=&lt;br /&gt;
&lt;br /&gt;
=Information Available on the Web=&lt;br /&gt;
[&amp;quot;Wikipedia&amp;quot;, http://en.wikipedia.org/wiki/GRASP_(Object_Oriented_Design)]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://class.ee.iastate.edu/berleant/home/Courses/SoftwareEngineering/CprE486fall2005/moreGRASP.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.cse.ucsd.edu/classes/fa06/cse111/lectures/Lecture%206%20%20Design%20Evaluation%20and%20Intro%20to%20OO%20Patterns.ppt&lt;br /&gt;
&lt;br /&gt;
http://davidhayden.com/blog/dave/archive/2004/12/06/667.aspx&lt;br /&gt;
&lt;br /&gt;
http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/maps/class4/Creator.html&lt;br /&gt;
http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/pdf/CS4233%20Class%204.pdf&lt;br /&gt;
&lt;br /&gt;
http://books.google.com/books?id=r8i-4En_aa4C&amp;amp;pg=PA228&amp;amp;lpg=PA228&amp;amp;dq=%22creator+pattern%22+example&amp;amp;source=web&amp;amp;ots=mT9HKWvlQX&amp;amp;sig=zsygR_-22hq9SfNOQLSiAaEExy8#PPA216,M1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://class.ee.iastate.edu/berleant/home/Courses/SoftwareEngineering/CprE486fall2005/moreGRASP.pdf&lt;br /&gt;
&lt;br /&gt;
http://faculty.kutztown.edu/spiegel/CSc520/PowerPoint/10_GRASP_1.ppt&lt;br /&gt;
&lt;br /&gt;
http://www.augustana.ab.ca/~mohrj/courses/2003.fall/csc220/lecture_notes/responsibilities.html&lt;br /&gt;
&lt;br /&gt;
http://www.soc.napier.ac.uk/module.php3?op=getresource&amp;amp;cloaking=no&amp;amp;resourceid=5938601&lt;br /&gt;
&lt;br /&gt;
http://faculty.inverhills.edu/dlevitt/CS%202000%20(FP)/GRASP%20Patterns.pdf&lt;br /&gt;
&lt;br /&gt;
http://web.njit.edu/~gblank/cis683/Larman%20Chapter%2018.ppt&lt;br /&gt;
&lt;br /&gt;
http://www.academic.marist.edu/~jzbv/SoftwareDevelopment/GRASP.ppt&lt;br /&gt;
&lt;br /&gt;
http://www.perisic.com/oosd/design/GRASP.ppt&lt;br /&gt;
&lt;br /&gt;
http://www.christmann.ws/ucis342/class7/class7.html&lt;/div&gt;</summary>
		<author><name>Ndokuzo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=8825</id>
		<title>CSC/ECE 517 Fall 2007/wiki3 5 ns</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=8825"/>
		<updated>2007-11-17T23:02:33Z</updated>

		<summary type="html">&lt;p&gt;Ndokuzo: /* Information Available on the Web */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''Take the Creator pattern and catalog the information on it available on the Web. Explain how it is different from the Factory pattern. Find good descriptions and good, concise, understandable examples. Tell which you consider the best to present to a class.''&lt;br /&gt;
=GRASP=&lt;br /&gt;
GRASP stands for '''G'''eneral '''R'''esponsibility '''A'''ssignment '''S'''oftware '''P'''atterns (or '''P'''rinciples), and they are the common object-oriented design patterns or principles that assign responsibility to classes and objects.&lt;br /&gt;
Some of GRASP includes Information Expert, Creator, Controller, Low Coupling, High Cohesion, Polymorphism, Pure Fabrication, Indirection, Protected Variations.&lt;br /&gt;
&lt;br /&gt;
=What is Creator Pattern?=&lt;br /&gt;
Creator Pattern is one of the GRASP approaches, which is developed to find an answer to the question of &amp;quot;Who creates an object of class A?&amp;quot; in object-oriented systems. &lt;br /&gt;
Creator pattern suggests that&lt;br /&gt;
Class B should create an instance of Class A if&lt;br /&gt;
* B aggregates instances of A, or;&lt;br /&gt;
* B contains instances of A, or;&lt;br /&gt;
* B records instances of A, or;&lt;br /&gt;
* B closely uses instances of A, or;&lt;br /&gt;
* B has the necessary information for creating the new instance of A.&lt;br /&gt;
&lt;br /&gt;
=Creator Pattern vs Factory Pattern=&lt;br /&gt;
&lt;br /&gt;
=Information Available on the Web=&lt;br /&gt;
[Wikipedia, http://en.wikipedia.org/wiki/GRASP_(Object_Oriented_Design)]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://class.ee.iastate.edu/berleant/home/Courses/SoftwareEngineering/CprE486fall2005/moreGRASP.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.cse.ucsd.edu/classes/fa06/cse111/lectures/Lecture%206%20%20Design%20Evaluation%20and%20Intro%20to%20OO%20Patterns.ppt&lt;br /&gt;
&lt;br /&gt;
http://davidhayden.com/blog/dave/archive/2004/12/06/667.aspx&lt;br /&gt;
&lt;br /&gt;
http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/maps/class4/Creator.html&lt;br /&gt;
http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/pdf/CS4233%20Class%204.pdf&lt;br /&gt;
&lt;br /&gt;
http://books.google.com/books?id=r8i-4En_aa4C&amp;amp;pg=PA228&amp;amp;lpg=PA228&amp;amp;dq=%22creator+pattern%22+example&amp;amp;source=web&amp;amp;ots=mT9HKWvlQX&amp;amp;sig=zsygR_-22hq9SfNOQLSiAaEExy8#PPA216,M1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://class.ee.iastate.edu/berleant/home/Courses/SoftwareEngineering/CprE486fall2005/moreGRASP.pdf&lt;br /&gt;
&lt;br /&gt;
http://faculty.kutztown.edu/spiegel/CSc520/PowerPoint/10_GRASP_1.ppt&lt;br /&gt;
&lt;br /&gt;
http://www.augustana.ab.ca/~mohrj/courses/2003.fall/csc220/lecture_notes/responsibilities.html&lt;br /&gt;
&lt;br /&gt;
http://www.soc.napier.ac.uk/module.php3?op=getresource&amp;amp;cloaking=no&amp;amp;resourceid=5938601&lt;br /&gt;
&lt;br /&gt;
http://faculty.inverhills.edu/dlevitt/CS%202000%20(FP)/GRASP%20Patterns.pdf&lt;br /&gt;
&lt;br /&gt;
http://web.njit.edu/~gblank/cis683/Larman%20Chapter%2018.ppt&lt;br /&gt;
&lt;br /&gt;
http://www.academic.marist.edu/~jzbv/SoftwareDevelopment/GRASP.ppt&lt;br /&gt;
&lt;br /&gt;
http://www.perisic.com/oosd/design/GRASP.ppt&lt;br /&gt;
&lt;br /&gt;
http://www.christmann.ws/ucis342/class7/class7.html&lt;/div&gt;</summary>
		<author><name>Ndokuzo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=8824</id>
		<title>CSC/ECE 517 Fall 2007/wiki3 5 ns</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=8824"/>
		<updated>2007-11-17T23:00:11Z</updated>

		<summary type="html">&lt;p&gt;Ndokuzo: /* What is Creator Pattern? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''Take the Creator pattern and catalog the information on it available on the Web. Explain how it is different from the Factory pattern. Find good descriptions and good, concise, understandable examples. Tell which you consider the best to present to a class.''&lt;br /&gt;
=GRASP=&lt;br /&gt;
GRASP stands for '''G'''eneral '''R'''esponsibility '''A'''ssignment '''S'''oftware '''P'''atterns (or '''P'''rinciples), and they are the common object-oriented design patterns or principles that assign responsibility to classes and objects.&lt;br /&gt;
Some of GRASP includes Information Expert, Creator, Controller, Low Coupling, High Cohesion, Polymorphism, Pure Fabrication, Indirection, Protected Variations.&lt;br /&gt;
&lt;br /&gt;
=What is Creator Pattern?=&lt;br /&gt;
Creator Pattern is one of the GRASP approaches, which is developed to find an answer to the question of &amp;quot;Who creates an object of class A?&amp;quot; in object-oriented systems. &lt;br /&gt;
Creator pattern suggests that&lt;br /&gt;
Class B should create an instance of Class A if&lt;br /&gt;
* B aggregates instances of A, or;&lt;br /&gt;
* B contains instances of A, or;&lt;br /&gt;
* B records instances of A, or;&lt;br /&gt;
* B closely uses instances of A, or;&lt;br /&gt;
* B has the necessary information for creating the new instance of A.&lt;br /&gt;
&lt;br /&gt;
=Creator Pattern vs Factory Pattern=&lt;br /&gt;
&lt;br /&gt;
=Information Available on the Web=&lt;br /&gt;
http://class.ee.iastate.edu/berleant/home/Courses/SoftwareEngineering/CprE486fall2005/moreGRASP.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.cse.ucsd.edu/classes/fa06/cse111/lectures/Lecture%206%20%20Design%20Evaluation%20and%20Intro%20to%20OO%20Patterns.ppt&lt;br /&gt;
&lt;br /&gt;
http://davidhayden.com/blog/dave/archive/2004/12/06/667.aspx&lt;br /&gt;
&lt;br /&gt;
http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/maps/class4/Creator.html&lt;br /&gt;
http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/pdf/CS4233%20Class%204.pdf&lt;br /&gt;
&lt;br /&gt;
http://books.google.com/books?id=r8i-4En_aa4C&amp;amp;pg=PA228&amp;amp;lpg=PA228&amp;amp;dq=%22creator+pattern%22+example&amp;amp;source=web&amp;amp;ots=mT9HKWvlQX&amp;amp;sig=zsygR_-22hq9SfNOQLSiAaEExy8#PPA216,M1&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/GRASP_(Object_Oriented_Design)&lt;br /&gt;
&lt;br /&gt;
http://class.ee.iastate.edu/berleant/home/Courses/SoftwareEngineering/CprE486fall2005/moreGRASP.pdf&lt;br /&gt;
&lt;br /&gt;
http://faculty.kutztown.edu/spiegel/CSc520/PowerPoint/10_GRASP_1.ppt&lt;br /&gt;
&lt;br /&gt;
http://www.augustana.ab.ca/~mohrj/courses/2003.fall/csc220/lecture_notes/responsibilities.html&lt;br /&gt;
&lt;br /&gt;
http://www.soc.napier.ac.uk/module.php3?op=getresource&amp;amp;cloaking=no&amp;amp;resourceid=5938601&lt;br /&gt;
&lt;br /&gt;
http://faculty.inverhills.edu/dlevitt/CS%202000%20(FP)/GRASP%20Patterns.pdf&lt;br /&gt;
&lt;br /&gt;
http://web.njit.edu/~gblank/cis683/Larman%20Chapter%2018.ppt&lt;br /&gt;
&lt;br /&gt;
http://www.academic.marist.edu/~jzbv/SoftwareDevelopment/GRASP.ppt&lt;br /&gt;
&lt;br /&gt;
http://www.perisic.com/oosd/design/GRASP.ppt&lt;br /&gt;
&lt;br /&gt;
http://www.christmann.ws/ucis342/class7/class7.html&lt;/div&gt;</summary>
		<author><name>Ndokuzo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=8823</id>
		<title>CSC/ECE 517 Fall 2007/wiki3 5 ns</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=8823"/>
		<updated>2007-11-17T22:59:47Z</updated>

		<summary type="html">&lt;p&gt;Ndokuzo: /* What is Creator Pattern? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''Take the Creator pattern and catalog the information on it available on the Web. Explain how it is different from the Factory pattern. Find good descriptions and good, concise, understandable examples. Tell which you consider the best to present to a class.''&lt;br /&gt;
=GRASP=&lt;br /&gt;
GRASP stands for '''G'''eneral '''R'''esponsibility '''A'''ssignment '''S'''oftware '''P'''atterns (or '''P'''rinciples), and they are the common object-oriented design patterns or principles that assign responsibility to classes and objects.&lt;br /&gt;
Some of GRASP includes Information Expert, Creator, Controller, Low Coupling, High Cohesion, Polymorphism, Pure Fabrication, Indirection, Protected Variations.&lt;br /&gt;
&lt;br /&gt;
=What is Creator Pattern?=&lt;br /&gt;
Creator Pattern is one of the GRASP approaches, which is developed to find an answer to the question of &amp;quot;Who creates an object of class A?&amp;quot; in object-oriented systems. &lt;br /&gt;
Creator patterns suggests that&lt;br /&gt;
Class B should create an instance of Class A if&lt;br /&gt;
* B aggregates instances of A, or;&lt;br /&gt;
* B contains instances of A, or;&lt;br /&gt;
* B records instances of A, or;&lt;br /&gt;
* B closely uses instances of A, or;&lt;br /&gt;
* B has the necessary information for creating the new instance of A.&lt;br /&gt;
&lt;br /&gt;
=Creator Pattern vs Factory Pattern=&lt;br /&gt;
&lt;br /&gt;
=Information Available on the Web=&lt;br /&gt;
http://class.ee.iastate.edu/berleant/home/Courses/SoftwareEngineering/CprE486fall2005/moreGRASP.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.cse.ucsd.edu/classes/fa06/cse111/lectures/Lecture%206%20%20Design%20Evaluation%20and%20Intro%20to%20OO%20Patterns.ppt&lt;br /&gt;
&lt;br /&gt;
http://davidhayden.com/blog/dave/archive/2004/12/06/667.aspx&lt;br /&gt;
&lt;br /&gt;
http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/maps/class4/Creator.html&lt;br /&gt;
http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/pdf/CS4233%20Class%204.pdf&lt;br /&gt;
&lt;br /&gt;
http://books.google.com/books?id=r8i-4En_aa4C&amp;amp;pg=PA228&amp;amp;lpg=PA228&amp;amp;dq=%22creator+pattern%22+example&amp;amp;source=web&amp;amp;ots=mT9HKWvlQX&amp;amp;sig=zsygR_-22hq9SfNOQLSiAaEExy8#PPA216,M1&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/GRASP_(Object_Oriented_Design)&lt;br /&gt;
&lt;br /&gt;
http://class.ee.iastate.edu/berleant/home/Courses/SoftwareEngineering/CprE486fall2005/moreGRASP.pdf&lt;br /&gt;
&lt;br /&gt;
http://faculty.kutztown.edu/spiegel/CSc520/PowerPoint/10_GRASP_1.ppt&lt;br /&gt;
&lt;br /&gt;
http://www.augustana.ab.ca/~mohrj/courses/2003.fall/csc220/lecture_notes/responsibilities.html&lt;br /&gt;
&lt;br /&gt;
http://www.soc.napier.ac.uk/module.php3?op=getresource&amp;amp;cloaking=no&amp;amp;resourceid=5938601&lt;br /&gt;
&lt;br /&gt;
http://faculty.inverhills.edu/dlevitt/CS%202000%20(FP)/GRASP%20Patterns.pdf&lt;br /&gt;
&lt;br /&gt;
http://web.njit.edu/~gblank/cis683/Larman%20Chapter%2018.ppt&lt;br /&gt;
&lt;br /&gt;
http://www.academic.marist.edu/~jzbv/SoftwareDevelopment/GRASP.ppt&lt;br /&gt;
&lt;br /&gt;
http://www.perisic.com/oosd/design/GRASP.ppt&lt;br /&gt;
&lt;br /&gt;
http://www.christmann.ws/ucis342/class7/class7.html&lt;/div&gt;</summary>
		<author><name>Ndokuzo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=8822</id>
		<title>CSC/ECE 517 Fall 2007/wiki3 5 ns</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=8822"/>
		<updated>2007-11-17T22:59:15Z</updated>

		<summary type="html">&lt;p&gt;Ndokuzo: /* What is Creator Pattern? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''Take the Creator pattern and catalog the information on it available on the Web. Explain how it is different from the Factory pattern. Find good descriptions and good, concise, understandable examples. Tell which you consider the best to present to a class.''&lt;br /&gt;
=GRASP=&lt;br /&gt;
GRASP stands for '''G'''eneral '''R'''esponsibility '''A'''ssignment '''S'''oftware '''P'''atterns (or '''P'''rinciples), and they are the common object-oriented design patterns or principles that assign responsibility to classes and objects.&lt;br /&gt;
Some of GRASP includes Information Expert, Creator, Controller, Low Coupling, High Cohesion, Polymorphism, Pure Fabrication, Indirection, Protected Variations.&lt;br /&gt;
&lt;br /&gt;
=What is Creator Pattern?=&lt;br /&gt;
Creator Pattern is one of the GRASP approaches, which is developed to find an answer to the question of &amp;quot;Who creates an object of class A?&amp;quot; in object-oriented systems. &lt;br /&gt;
Creator patterns suggests that&lt;br /&gt;
Class B should create an instance of Class A if&lt;br /&gt;
* B aggregates instances of Class, or;&lt;br /&gt;
* B contains instances of Class, or;&lt;br /&gt;
* B records instances of Class, or;&lt;br /&gt;
* B closely uses instances of Class, or;&lt;br /&gt;
* B has the necessary information for creating the new instance of Class.&lt;br /&gt;
&lt;br /&gt;
=Creator Pattern vs Factory Pattern=&lt;br /&gt;
&lt;br /&gt;
=Information Available on the Web=&lt;br /&gt;
http://class.ee.iastate.edu/berleant/home/Courses/SoftwareEngineering/CprE486fall2005/moreGRASP.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.cse.ucsd.edu/classes/fa06/cse111/lectures/Lecture%206%20%20Design%20Evaluation%20and%20Intro%20to%20OO%20Patterns.ppt&lt;br /&gt;
&lt;br /&gt;
http://davidhayden.com/blog/dave/archive/2004/12/06/667.aspx&lt;br /&gt;
&lt;br /&gt;
http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/maps/class4/Creator.html&lt;br /&gt;
http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/pdf/CS4233%20Class%204.pdf&lt;br /&gt;
&lt;br /&gt;
http://books.google.com/books?id=r8i-4En_aa4C&amp;amp;pg=PA228&amp;amp;lpg=PA228&amp;amp;dq=%22creator+pattern%22+example&amp;amp;source=web&amp;amp;ots=mT9HKWvlQX&amp;amp;sig=zsygR_-22hq9SfNOQLSiAaEExy8#PPA216,M1&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/GRASP_(Object_Oriented_Design)&lt;br /&gt;
&lt;br /&gt;
http://class.ee.iastate.edu/berleant/home/Courses/SoftwareEngineering/CprE486fall2005/moreGRASP.pdf&lt;br /&gt;
&lt;br /&gt;
http://faculty.kutztown.edu/spiegel/CSc520/PowerPoint/10_GRASP_1.ppt&lt;br /&gt;
&lt;br /&gt;
http://www.augustana.ab.ca/~mohrj/courses/2003.fall/csc220/lecture_notes/responsibilities.html&lt;br /&gt;
&lt;br /&gt;
http://www.soc.napier.ac.uk/module.php3?op=getresource&amp;amp;cloaking=no&amp;amp;resourceid=5938601&lt;br /&gt;
&lt;br /&gt;
http://faculty.inverhills.edu/dlevitt/CS%202000%20(FP)/GRASP%20Patterns.pdf&lt;br /&gt;
&lt;br /&gt;
http://web.njit.edu/~gblank/cis683/Larman%20Chapter%2018.ppt&lt;br /&gt;
&lt;br /&gt;
http://www.academic.marist.edu/~jzbv/SoftwareDevelopment/GRASP.ppt&lt;br /&gt;
&lt;br /&gt;
http://www.perisic.com/oosd/design/GRASP.ppt&lt;br /&gt;
&lt;br /&gt;
http://www.christmann.ws/ucis342/class7/class7.html&lt;/div&gt;</summary>
		<author><name>Ndokuzo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=8821</id>
		<title>CSC/ECE 517 Fall 2007/wiki3 5 ns</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=8821"/>
		<updated>2007-11-17T22:26:27Z</updated>

		<summary type="html">&lt;p&gt;Ndokuzo: /* GRASP Patterns */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''Take the Creator pattern and catalog the information on it available on the Web. Explain how it is different from the Factory pattern. Find good descriptions and good, concise, understandable examples. Tell which you consider the best to present to a class.''&lt;br /&gt;
=GRASP=&lt;br /&gt;
GRASP stands for '''G'''eneral '''R'''esponsibility '''A'''ssignment '''S'''oftware '''P'''atterns (or '''P'''rinciples), and they are the common object-oriented design patterns or principles that assign responsibility to classes and objects.&lt;br /&gt;
Some of GRASP includes Information Expert, Creator, Controller, Low Coupling, High Cohesion, Polymorphism, Pure Fabrication, Indirection, Protected Variations.&lt;br /&gt;
&lt;br /&gt;
=What is Creator Pattern?=&lt;br /&gt;
=Creator Pattern vs Factory Pattern=&lt;br /&gt;
&lt;br /&gt;
=Information Available on the Web=&lt;br /&gt;
http://class.ee.iastate.edu/berleant/home/Courses/SoftwareEngineering/CprE486fall2005/moreGRASP.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.cse.ucsd.edu/classes/fa06/cse111/lectures/Lecture%206%20%20Design%20Evaluation%20and%20Intro%20to%20OO%20Patterns.ppt&lt;br /&gt;
&lt;br /&gt;
http://davidhayden.com/blog/dave/archive/2004/12/06/667.aspx&lt;br /&gt;
&lt;br /&gt;
http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/maps/class4/Creator.html&lt;br /&gt;
http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/pdf/CS4233%20Class%204.pdf&lt;br /&gt;
&lt;br /&gt;
http://books.google.com/books?id=r8i-4En_aa4C&amp;amp;pg=PA228&amp;amp;lpg=PA228&amp;amp;dq=%22creator+pattern%22+example&amp;amp;source=web&amp;amp;ots=mT9HKWvlQX&amp;amp;sig=zsygR_-22hq9SfNOQLSiAaEExy8#PPA216,M1&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/GRASP_(Object_Oriented_Design)&lt;br /&gt;
&lt;br /&gt;
http://class.ee.iastate.edu/berleant/home/Courses/SoftwareEngineering/CprE486fall2005/moreGRASP.pdf&lt;br /&gt;
&lt;br /&gt;
http://faculty.kutztown.edu/spiegel/CSc520/PowerPoint/10_GRASP_1.ppt&lt;br /&gt;
&lt;br /&gt;
http://www.augustana.ab.ca/~mohrj/courses/2003.fall/csc220/lecture_notes/responsibilities.html&lt;br /&gt;
&lt;br /&gt;
http://www.soc.napier.ac.uk/module.php3?op=getresource&amp;amp;cloaking=no&amp;amp;resourceid=5938601&lt;br /&gt;
&lt;br /&gt;
http://faculty.inverhills.edu/dlevitt/CS%202000%20(FP)/GRASP%20Patterns.pdf&lt;br /&gt;
&lt;br /&gt;
http://web.njit.edu/~gblank/cis683/Larman%20Chapter%2018.ppt&lt;br /&gt;
&lt;br /&gt;
http://www.academic.marist.edu/~jzbv/SoftwareDevelopment/GRASP.ppt&lt;br /&gt;
&lt;br /&gt;
http://www.perisic.com/oosd/design/GRASP.ppt&lt;br /&gt;
&lt;br /&gt;
http://www.christmann.ws/ucis342/class7/class7.html&lt;/div&gt;</summary>
		<author><name>Ndokuzo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=8820</id>
		<title>CSC/ECE 517 Fall 2007/wiki3 5 ns</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=8820"/>
		<updated>2007-11-17T22:25:55Z</updated>

		<summary type="html">&lt;p&gt;Ndokuzo: /* GRASP Patterns */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''Take the Creator pattern and catalog the information on it available on the Web. Explain how it is different from the Factory pattern. Find good descriptions and good, concise, understandable examples. Tell which you consider the best to present to a class.''&lt;br /&gt;
=GRASP Patterns=&lt;br /&gt;
GRASP stands for '''G'''eneral '''R'''esponsibility '''A'''ssignment '''S'''oftware '''P'''atterns (or '''P'''rinciples), and they are the common object-oriented design patterns or principles that assign responsibility to classes and objects.&lt;br /&gt;
Some of GRASP includes Information Expert, Creator, Controller, Low Coupling, High Cohesion, Polymorphism, Pure Fabrication, Indirection, Protected Variations.&lt;br /&gt;
&lt;br /&gt;
=What is Creator Pattern?=&lt;br /&gt;
=Creator Pattern vs Factory Pattern=&lt;br /&gt;
&lt;br /&gt;
=Information Available on the Web=&lt;br /&gt;
http://class.ee.iastate.edu/berleant/home/Courses/SoftwareEngineering/CprE486fall2005/moreGRASP.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.cse.ucsd.edu/classes/fa06/cse111/lectures/Lecture%206%20%20Design%20Evaluation%20and%20Intro%20to%20OO%20Patterns.ppt&lt;br /&gt;
&lt;br /&gt;
http://davidhayden.com/blog/dave/archive/2004/12/06/667.aspx&lt;br /&gt;
&lt;br /&gt;
http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/maps/class4/Creator.html&lt;br /&gt;
http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/pdf/CS4233%20Class%204.pdf&lt;br /&gt;
&lt;br /&gt;
http://books.google.com/books?id=r8i-4En_aa4C&amp;amp;pg=PA228&amp;amp;lpg=PA228&amp;amp;dq=%22creator+pattern%22+example&amp;amp;source=web&amp;amp;ots=mT9HKWvlQX&amp;amp;sig=zsygR_-22hq9SfNOQLSiAaEExy8#PPA216,M1&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/GRASP_(Object_Oriented_Design)&lt;br /&gt;
&lt;br /&gt;
http://class.ee.iastate.edu/berleant/home/Courses/SoftwareEngineering/CprE486fall2005/moreGRASP.pdf&lt;br /&gt;
&lt;br /&gt;
http://faculty.kutztown.edu/spiegel/CSc520/PowerPoint/10_GRASP_1.ppt&lt;br /&gt;
&lt;br /&gt;
http://www.augustana.ab.ca/~mohrj/courses/2003.fall/csc220/lecture_notes/responsibilities.html&lt;br /&gt;
&lt;br /&gt;
http://www.soc.napier.ac.uk/module.php3?op=getresource&amp;amp;cloaking=no&amp;amp;resourceid=5938601&lt;br /&gt;
&lt;br /&gt;
http://faculty.inverhills.edu/dlevitt/CS%202000%20(FP)/GRASP%20Patterns.pdf&lt;br /&gt;
&lt;br /&gt;
http://web.njit.edu/~gblank/cis683/Larman%20Chapter%2018.ppt&lt;br /&gt;
&lt;br /&gt;
http://www.academic.marist.edu/~jzbv/SoftwareDevelopment/GRASP.ppt&lt;br /&gt;
&lt;br /&gt;
http://www.perisic.com/oosd/design/GRASP.ppt&lt;br /&gt;
&lt;br /&gt;
http://www.christmann.ws/ucis342/class7/class7.html&lt;/div&gt;</summary>
		<author><name>Ndokuzo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=8450</id>
		<title>CSC/ECE 517 Fall 2007/wiki3 5 ns</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=8450"/>
		<updated>2007-11-14T04:26:24Z</updated>

		<summary type="html">&lt;p&gt;Ndokuzo: /* Creator Pattern vs Factory Pattern? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''Take the Creator pattern and catalog the information on it available on the Web. Explain how it is different from the Factory pattern. Find good descriptions and good, concise, understandable examples. Tell which you consider the best to present to a class.''&lt;br /&gt;
=GRASP Patterns=&lt;br /&gt;
=What is Creator Pattern?=&lt;br /&gt;
=Creator Pattern vs Factory Pattern=&lt;br /&gt;
&lt;br /&gt;
=Information Available on the Web=&lt;br /&gt;
http://class.ee.iastate.edu/berleant/home/Courses/SoftwareEngineering/CprE486fall2005/moreGRASP.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.cse.ucsd.edu/classes/fa06/cse111/lectures/Lecture%206%20%20Design%20Evaluation%20and%20Intro%20to%20OO%20Patterns.ppt&lt;br /&gt;
&lt;br /&gt;
http://davidhayden.com/blog/dave/archive/2004/12/06/667.aspx&lt;br /&gt;
&lt;br /&gt;
http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/maps/class4/Creator.html&lt;br /&gt;
http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/pdf/CS4233%20Class%204.pdf&lt;br /&gt;
&lt;br /&gt;
http://books.google.com/books?id=r8i-4En_aa4C&amp;amp;pg=PA228&amp;amp;lpg=PA228&amp;amp;dq=%22creator+pattern%22+example&amp;amp;source=web&amp;amp;ots=mT9HKWvlQX&amp;amp;sig=zsygR_-22hq9SfNOQLSiAaEExy8#PPA216,M1&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/GRASP_(Object_Oriented_Design)&lt;br /&gt;
&lt;br /&gt;
http://class.ee.iastate.edu/berleant/home/Courses/SoftwareEngineering/CprE486fall2005/moreGRASP.pdf&lt;br /&gt;
&lt;br /&gt;
http://faculty.kutztown.edu/spiegel/CSc520/PowerPoint/10_GRASP_1.ppt&lt;br /&gt;
&lt;br /&gt;
http://www.augustana.ab.ca/~mohrj/courses/2003.fall/csc220/lecture_notes/responsibilities.html&lt;br /&gt;
&lt;br /&gt;
http://www.soc.napier.ac.uk/module.php3?op=getresource&amp;amp;cloaking=no&amp;amp;resourceid=5938601&lt;br /&gt;
&lt;br /&gt;
http://faculty.inverhills.edu/dlevitt/CS%202000%20(FP)/GRASP%20Patterns.pdf&lt;br /&gt;
&lt;br /&gt;
http://web.njit.edu/~gblank/cis683/Larman%20Chapter%2018.ppt&lt;br /&gt;
&lt;br /&gt;
http://www.academic.marist.edu/~jzbv/SoftwareDevelopment/GRASP.ppt&lt;br /&gt;
&lt;br /&gt;
http://www.perisic.com/oosd/design/GRASP.ppt&lt;br /&gt;
&lt;br /&gt;
http://www.christmann.ws/ucis342/class7/class7.html&lt;/div&gt;</summary>
		<author><name>Ndokuzo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=8449</id>
		<title>CSC/ECE 517 Fall 2007/wiki3 5 ns</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=8449"/>
		<updated>2007-11-14T04:26:14Z</updated>

		<summary type="html">&lt;p&gt;Ndokuzo: /* How is it different from Factory Pattern? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''Take the Creator pattern and catalog the information on it available on the Web. Explain how it is different from the Factory pattern. Find good descriptions and good, concise, understandable examples. Tell which you consider the best to present to a class.''&lt;br /&gt;
=GRASP Patterns=&lt;br /&gt;
=What is Creator Pattern?=&lt;br /&gt;
=Creator Pattern vs Factory Pattern?=&lt;br /&gt;
&lt;br /&gt;
=Information Available on the Web=&lt;br /&gt;
http://class.ee.iastate.edu/berleant/home/Courses/SoftwareEngineering/CprE486fall2005/moreGRASP.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.cse.ucsd.edu/classes/fa06/cse111/lectures/Lecture%206%20%20Design%20Evaluation%20and%20Intro%20to%20OO%20Patterns.ppt&lt;br /&gt;
&lt;br /&gt;
http://davidhayden.com/blog/dave/archive/2004/12/06/667.aspx&lt;br /&gt;
&lt;br /&gt;
http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/maps/class4/Creator.html&lt;br /&gt;
http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/pdf/CS4233%20Class%204.pdf&lt;br /&gt;
&lt;br /&gt;
http://books.google.com/books?id=r8i-4En_aa4C&amp;amp;pg=PA228&amp;amp;lpg=PA228&amp;amp;dq=%22creator+pattern%22+example&amp;amp;source=web&amp;amp;ots=mT9HKWvlQX&amp;amp;sig=zsygR_-22hq9SfNOQLSiAaEExy8#PPA216,M1&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/GRASP_(Object_Oriented_Design)&lt;br /&gt;
&lt;br /&gt;
http://class.ee.iastate.edu/berleant/home/Courses/SoftwareEngineering/CprE486fall2005/moreGRASP.pdf&lt;br /&gt;
&lt;br /&gt;
http://faculty.kutztown.edu/spiegel/CSc520/PowerPoint/10_GRASP_1.ppt&lt;br /&gt;
&lt;br /&gt;
http://www.augustana.ab.ca/~mohrj/courses/2003.fall/csc220/lecture_notes/responsibilities.html&lt;br /&gt;
&lt;br /&gt;
http://www.soc.napier.ac.uk/module.php3?op=getresource&amp;amp;cloaking=no&amp;amp;resourceid=5938601&lt;br /&gt;
&lt;br /&gt;
http://faculty.inverhills.edu/dlevitt/CS%202000%20(FP)/GRASP%20Patterns.pdf&lt;br /&gt;
&lt;br /&gt;
http://web.njit.edu/~gblank/cis683/Larman%20Chapter%2018.ppt&lt;br /&gt;
&lt;br /&gt;
http://www.academic.marist.edu/~jzbv/SoftwareDevelopment/GRASP.ppt&lt;br /&gt;
&lt;br /&gt;
http://www.perisic.com/oosd/design/GRASP.ppt&lt;br /&gt;
&lt;br /&gt;
http://www.christmann.ws/ucis342/class7/class7.html&lt;/div&gt;</summary>
		<author><name>Ndokuzo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=8448</id>
		<title>CSC/ECE 517 Fall 2007/wiki3 5 ns</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=8448"/>
		<updated>2007-11-14T04:25:32Z</updated>

		<summary type="html">&lt;p&gt;Ndokuzo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''Take the Creator pattern and catalog the information on it available on the Web. Explain how it is different from the Factory pattern. Find good descriptions and good, concise, understandable examples. Tell which you consider the best to present to a class.''&lt;br /&gt;
=GRASP Patterns=&lt;br /&gt;
=What is Creator Pattern?=&lt;br /&gt;
=How is it different from Factory Pattern?=&lt;br /&gt;
=Information Available on the Web=&lt;br /&gt;
http://class.ee.iastate.edu/berleant/home/Courses/SoftwareEngineering/CprE486fall2005/moreGRASP.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.cse.ucsd.edu/classes/fa06/cse111/lectures/Lecture%206%20%20Design%20Evaluation%20and%20Intro%20to%20OO%20Patterns.ppt&lt;br /&gt;
&lt;br /&gt;
http://davidhayden.com/blog/dave/archive/2004/12/06/667.aspx&lt;br /&gt;
&lt;br /&gt;
http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/maps/class4/Creator.html&lt;br /&gt;
http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/pdf/CS4233%20Class%204.pdf&lt;br /&gt;
&lt;br /&gt;
http://books.google.com/books?id=r8i-4En_aa4C&amp;amp;pg=PA228&amp;amp;lpg=PA228&amp;amp;dq=%22creator+pattern%22+example&amp;amp;source=web&amp;amp;ots=mT9HKWvlQX&amp;amp;sig=zsygR_-22hq9SfNOQLSiAaEExy8#PPA216,M1&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/GRASP_(Object_Oriented_Design)&lt;br /&gt;
&lt;br /&gt;
http://class.ee.iastate.edu/berleant/home/Courses/SoftwareEngineering/CprE486fall2005/moreGRASP.pdf&lt;br /&gt;
&lt;br /&gt;
http://faculty.kutztown.edu/spiegel/CSc520/PowerPoint/10_GRASP_1.ppt&lt;br /&gt;
&lt;br /&gt;
http://www.augustana.ab.ca/~mohrj/courses/2003.fall/csc220/lecture_notes/responsibilities.html&lt;br /&gt;
&lt;br /&gt;
http://www.soc.napier.ac.uk/module.php3?op=getresource&amp;amp;cloaking=no&amp;amp;resourceid=5938601&lt;br /&gt;
&lt;br /&gt;
http://faculty.inverhills.edu/dlevitt/CS%202000%20(FP)/GRASP%20Patterns.pdf&lt;br /&gt;
&lt;br /&gt;
http://web.njit.edu/~gblank/cis683/Larman%20Chapter%2018.ppt&lt;br /&gt;
&lt;br /&gt;
http://www.academic.marist.edu/~jzbv/SoftwareDevelopment/GRASP.ppt&lt;br /&gt;
&lt;br /&gt;
http://www.perisic.com/oosd/design/GRASP.ppt&lt;br /&gt;
&lt;br /&gt;
http://www.christmann.ws/ucis342/class7/class7.html&lt;/div&gt;</summary>
		<author><name>Ndokuzo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=8429</id>
		<title>CSC/ECE 517 Fall 2007/wiki3 5 ns</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=8429"/>
		<updated>2007-11-14T01:54:00Z</updated>

		<summary type="html">&lt;p&gt;Ndokuzo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''Take the Creator pattern and catalog the information on it available on the Web. Explain how it is different from the Factory pattern. Find good descriptions and good, concise, understandable examples. Tell which you consider the best to present to a class.''&lt;br /&gt;
=What is Creator Pattern?=&lt;br /&gt;
=How is it different from Factory Pattern?=&lt;br /&gt;
=Information Available on the Web=&lt;/div&gt;</summary>
		<author><name>Ndokuzo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=8428</id>
		<title>CSC/ECE 517 Fall 2007/wiki3 5 ns</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=8428"/>
		<updated>2007-11-14T01:53:23Z</updated>

		<summary type="html">&lt;p&gt;Ndokuzo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Creator Pattern=&lt;br /&gt;
''Take the Creator pattern and catalog the information on it available on the Web. Explain how it is different from the Factory pattern. Find good descriptions and good, concise, understandable examples. Tell which you consider the best to present to a class.''&lt;br /&gt;
=What is Creator Pattern?=&lt;br /&gt;
=How is it different from Factory Pattern?=&lt;br /&gt;
=Information Available on the Web=&lt;/div&gt;</summary>
		<author><name>Ndokuzo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=8427</id>
		<title>CSC/ECE 517 Fall 2007/wiki3 5 ns</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=8427"/>
		<updated>2007-11-14T01:53:15Z</updated>

		<summary type="html">&lt;p&gt;Ndokuzo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Creator Pattern=&lt;br /&gt;
''Take the Creator pattern and catalog the information on it available on the Web. Explain how it is different from the Factory pattern. Find good descriptions and good, concise, understandable examples. Tell which you consider the best to present to a class.''&lt;br /&gt;
=What is Creator Pattern?=&lt;br /&gt;
=How is it different from Factory Pattern?&lt;br /&gt;
=Information Available on the Web=&lt;/div&gt;</summary>
		<author><name>Ndokuzo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=8426</id>
		<title>CSC/ECE 517 Fall 2007/wiki3 5 ns</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=8426"/>
		<updated>2007-11-14T01:51:59Z</updated>

		<summary type="html">&lt;p&gt;Ndokuzo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Creator Pattern=&lt;br /&gt;
=Question=&lt;br /&gt;
Take the Creator pattern and catalog the information on it available on the Web. Explain how it is different from the Factory pattern. Find good descriptions and good, concise, understandable examples. Tell which you consider the best to present to a class.&lt;br /&gt;
=What is Creator Pattern?=&lt;br /&gt;
=How is it different from Factory Pattern?=&lt;br /&gt;
=Information Avaliable on the Web=&lt;/div&gt;</summary>
		<author><name>Ndokuzo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=8425</id>
		<title>CSC/ECE 517 Fall 2007/wiki3 5 ns</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=8425"/>
		<updated>2007-11-14T01:51:43Z</updated>

		<summary type="html">&lt;p&gt;Ndokuzo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Creator Pattern=&lt;br /&gt;
=Question=&lt;br /&gt;
Take the Creator pattern and catalog the information on it available on the Web. Explain how it is different from the Factory pattern. Find good descriptions and good, concise, understandable examples. Tell which you consider the best to present to a class.&lt;br /&gt;
=What is Creator Pattern?=&lt;br /&gt;
=How is it different from Factory Pattern?&lt;br /&gt;
=Information Avaliable on the Web=&lt;/div&gt;</summary>
		<author><name>Ndokuzo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_9_NT&amp;diff=7609</id>
		<title>CSC/ECE 517 Fall 2007/wiki2 9 NT</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_9_NT&amp;diff=7609"/>
		<updated>2007-10-25T00:48:36Z</updated>

		<summary type="html">&lt;p&gt;Ndokuzo: /* Others */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''Principle of Least Astonishment. Write a guide to the Web pages on the Principle of Least Astonishment. Which should the reader look at for easy-to-understand examples? Which give a feel for where the principle should be used? Is this principle present in fields other than programming? Is the term used consistently in other disciplines?''&lt;br /&gt;
&lt;br /&gt;
==What is 'Principle of Least Astonishment'?==&lt;br /&gt;
&lt;br /&gt;
'Principle of Least Astonishment' or 'Rule of minimum surprise' asserts that the system will cause the least surprise for the user by being as consistent and predictable as possible, and therefore usable. Which imply that in case of an ambiguity or a conflict in the system, the behavior of the system should be the one which will least surprise the user. In computer science, this principle has a wide range of application in topics such as user-interface design, programming language design, and programming. This principle is used in various disciplines as well as computer science such as engineering, science, and philosophy which are covered later in this wiki. After this brief information about the principle of least astonishment, now we are going to talk more about the sources found online about this topic and how well they explore the topic.&lt;br /&gt;
&lt;br /&gt;
==Guide to Web pages on Principle of Least Astonishment in Programming==&lt;br /&gt;
&lt;br /&gt;
When you type the keyword “Principle of Least Astonishment” to Google, it returns about 35,800 web pages. Surprisingly, none of the web pages listed are good enough to explain the topic thoroughly by itself.&lt;br /&gt;
&lt;br /&gt;
Here, we are going to explain the top searches returned by the Google query and comment on how effective they are in presenting this topic. This section is divided into two subtopics where we list the links with the easy-to-understand examples and links that give a feel where this principle should be used, even though they are divided into these subtopics as the assignment question states, there is no strict boundaries between them. So, a topic that gives a feel where this principle is used may also give easy-to-understand examples to explain it.&lt;br /&gt;
&lt;br /&gt;
===Where should the reader look for easy-to-understand examples?===&lt;br /&gt;
&lt;br /&gt;
[http://c2.com/cgi/wiki?PrincipleOfLeastAstonishment &amp;quot;Principle of Least Astonishment at Portland Pattern Repository&amp;quot;] provides a simple explanation to the topic and gives a couple of easy-to-understand examples; this is one of the best sites that one should start to learn on this topic.&lt;br /&gt;
&lt;br /&gt;
[http://andywibbels.com/post/1263 &amp;quot;Andy Wibbel&amp;quot;] gives the easy-to-understand definition of the principle that is combined from different sources. This is a good web page to start to learn about the topic, but it does not give any examples and it does not present where this principle is used.&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Principle_of_least_astonishment &amp;quot;Wikipedia&amp;quot;] defines the Principle of Least Astonishment briefly, and gives two simple easy-to-understand real-life examples, this website can help one to understand what the principle is but it is not a very good page to understand the topic and its application in great detail at all.&lt;br /&gt;
&lt;br /&gt;
[http://jooto.com/blog/index.php/2006/06/06/principle-of-least-astonishment/ &amp;quot;Ethical Software&amp;quot;] is a blog of an instructor, Alex Bunardzic, where he shares his in class experience when he was teaching Principle of Least Astonishment. The example that he gave in class is the Ruby on Rails code where he suggests using &amp;lt;%yield%&amp;gt; instead of &amp;lt;%content_for_layout%&amp;gt; to demonstrate this principle. This web page is not a good start to learn the topic, but it gives the idea of the principle and it demonstrates it with the Ruby on Rails code which is very related to what we have been doing in our class.&lt;br /&gt;
&lt;br /&gt;
====Examples of Violation of the Principle====&lt;br /&gt;
[http://news.bbc.co.uk/2/hi/technology/3129184.stm &amp;quot;Site finding system&amp;quot;] is a topic appeared in BBC News on September, 2003 which gives an real-life example of violation of this principle, and explains what it had caused.&lt;br /&gt;
&lt;br /&gt;
[http://www.cs.arizona.edu/projects/sumatra/hallofshame/ &amp;quot;Java Hall of Shame&amp;quot;] presents some of the points where programming language Java does not obey the Principle of Least Astonishment.&lt;br /&gt;
&lt;br /&gt;
[http://maba.wordpress.com/2006/09/10/thunderbird-just-stole-me-30-minutes/ &amp;quot;Thunderbird just stole me 30 minutes&amp;quot;] is a blog written by Martin Backschat, where he mentions how he was astonished by the user-interface of Mozilla Thunderbird while trying to change his password.&lt;br /&gt;
&lt;br /&gt;
===Where should the reader look for to get a feel where the principle should be used?===&lt;br /&gt;
&lt;br /&gt;
====Web Page Design====&lt;br /&gt;
[http://www.ibm.com/developerworks/web/library/us-cranky10.html &amp;quot;Peter Seebach&amp;quot;] explores the Principle of Least Astonishment on the web pages, talks about the common issues in web pages that astonish viewers. This web page gives many easy-to-understand examples of how this principle being violated on web pages.&lt;br /&gt;
&lt;br /&gt;
====API Design and Programming====&lt;br /&gt;
[http://www.atalasoft.com/cs/blogs/stevehawley/archive/2006/02/27/9590.aspx &amp;quot;Steve’s Tech Talk&amp;quot;] gives examples of the Principle of Least Astonishment from a computer scientist’s perspective. The examples provided in this site are all about how to write code and API that would surprise the client least.&lt;br /&gt;
&lt;br /&gt;
[http://benpryor.com/blog/index.php?/archives/19-API-Design-The-Principle-of-Least-Surprise.html, &amp;quot;API Design&amp;quot;] emphasized the importance of following the principle of least surprise in API design. Since an API will be used my many consumers, it should be intuitive, naming conventions should be clear and understandable, and API overall should meet the consumers expectations which is what this principle states.&lt;br /&gt;
&lt;br /&gt;
====User Interface Design====&lt;br /&gt;
[http://www.faqs.org/docs/artu/ch11s01.html &amp;quot;The Art of Unix Programming&amp;quot;] explains what the principle is and how it can be used when designing user-interfaces.&lt;br /&gt;
&lt;br /&gt;
[http://ergo.human.cornell.edu/ahtutorials/interface.html, &amp;quot;Ergonomic Guidelines for UI Design&amp;quot;] lists the basic rules of thumb for designing good user interfaces, which of course includes following the Principle of Least Astonishment to be intuitive and consistent for the users of the system. &lt;br /&gt;
&lt;br /&gt;
[http://www.ibm.com/developerworks/web/library/wa-cranky75/index.html, &amp;quot;Simple is the the Sophisticated&amp;quot;] is an article by Peter Seebach on how applications with simpler user interfaces tend to dominate the ones with complicated interfaces which all ties in with what Principle of Least Astonishment states.&lt;br /&gt;
&lt;br /&gt;
== Least Astonishment in Other Disciplines==&lt;br /&gt;
The 'Principle of Least Astonishment' can be considered as a cross disciplinary law in our modern life. From software to machine design to modern philosophy it is considered as a valid test criteria to well designed system. While the system changes (IT, product design, law, science, ...) the principle name will changes as well, as it appear in different terms ('User Centered Design', Contextual_design, Law of Nature, Occam's razor, ...). May be one of the clear examples to define a good design using the current principle is [http://en.wikipedia.org/wiki/Physical_law Law of Nature], which define a solution -or well designed system- to be:&lt;br /&gt;
* True!&lt;br /&gt;
* Universal. They appear to apply everywhere in the universe. &lt;br /&gt;
* Simple. They are typically easily  expressed.&lt;br /&gt;
* Absolute. Nothing in the universe appears to affect them. &lt;br /&gt;
* Stable. Unchanged since first discovered.&lt;br /&gt;
* Omnipotent. Everything in the universe apparently must comply with them (according to observations).&lt;br /&gt;
* Conservative.&lt;br /&gt;
* Symmetry in space and time.&lt;br /&gt;
* Reversible in time.&lt;br /&gt;
&lt;br /&gt;
Certainly these criteria would define a good code or a user interface as a counter to law of nature. Which surprisingly, or in our case least surprisingly, the 'Principle of Least Astonishment' prove itself by being least surprise solution as it is true, universal, simple, absolute, stable, omnipotent, symmetry and reversible. Following is general outline where the principle is applied.&lt;br /&gt;
&lt;br /&gt;
===Engineering and Design===&lt;br /&gt;
Design of equipment/product/system/laws/environment for human interaction is a whole science which is called [http://en.wikipedia.org/wiki/Ergonomics Ergonomics]. Although, this science expands to contain other aspects such as physical, cognitive, and organizational ergonomics. More specific concepts that relate to ours will be [http://en.wikipedia.org/wiki/User-centered_design 'User Centered Design'] or [http://en.wikipedia.org/wiki/Contextual_design 'Contextual Design']. 'Contextual Design' support not only the principle of least surprise but also investigate into the context and motivation of user behavior to be adopted by the design. Certain enough this principle is applied to every aspect in our life; cars, buildings, traffic, education, ...etc.&lt;br /&gt;
&lt;br /&gt;
* [http://en.wikipedia.org/wiki/List_of_human-computer_interaction_topics &amp;quot;Wikipedia List of human-computer interaction topics&amp;quot;] provides a comprehensive list of topics related to the application of the human-computer interaction. [Other links].&lt;br /&gt;
&lt;br /&gt;
===Science and Nature===&lt;br /&gt;
The same principle is extended to science as well, where [http://en.wikipedia.org/wiki/Physical_law Law of Nature] is believed to carry the least surprise. As Einstein states, ''&amp;quot;To me, the most incomprehensible thing about the universe is that it is comprehensible&amp;quot; [http://www.csicop.org/si/2000-09/laws.html 2].'' A prove would be that many of the law of natural and major discoveries, as relativity, were found before it was directly observed, analytically or experimentally observed. Which illustrate that the Natural and the universe is a good design as well.&lt;br /&gt;
&lt;br /&gt;
* [http://ecommons.library.cornell.edu/retrieve/300/Art_of_Discovery_Oliver2.pdf &amp;quot;The Incomplete Guide to the Art of Discovery . PDF&amp;quot;], Page ''51,52'', '' by [http://www.mssu.edu/seg-vm/bio_jack_e__oliver.html Jack E. Oliver] introduce the 'Principal of Least Astonishment', or 'intuition' as a tool to be used to discover the nature and its laws.&lt;br /&gt;
&lt;br /&gt;
===Philosophy===&lt;br /&gt;
Another field where the principle apply is philosophy, where it is used to distinguish between several philosophical interpretation to the same controversy. While in philosophy it is more referred as [http://en.wikipedia.org/wiki/Occam%27s_razor#Philosophy_of_mind 'Occam's razor'] or [http://en.wikipedia.org/wiki/Parsimony 'Parsimony'], which is not identical to the current principle. 'Occam's razor' assumes that the most simple explanation, imply fewer assumption, is probably the most valid solution. Anyway, simple design is probably the least surprising one.&lt;br /&gt;
&lt;br /&gt;
* [http://home.att.net/~p.caimi/schrodinger.html &amp;quot;What is Life?&amp;quot;] a book by physicist Erwin Schrödinger providing one of the first usage of this principal in philosophy to provide an explanation for 'free will', and 'human consciousness'. It is worth to say that the DNA concept is first introduced through this book, while it hadn't been discovered yet. [Other links].&lt;br /&gt;
&lt;br /&gt;
===Religion===&lt;br /&gt;
'The Principal of Least Astonishment' and 'Occam's razor' are surprisingly used in religion. [http://en.wikipedia.org/wiki/Theism Theisms] use 'The Principal of Least Astonishment' to prove the [http://en.wikipedia.org/wiki/Existence_of_God Existence of God], and the [http://en.wikipedia.org/wiki/Intelligent_design Intelligent design of Universe]. In the other hand, [http://en.wikipedia.org/wiki/Atheism Atheisms] use 'Occam's razor' to argue [http://en.wikipedia.org/wiki/Existence_of_God Existence of God], and as an [http://en.wikipedia.org/wiki/Argument_from_miracles Argument from miracles].&lt;br /&gt;
&lt;br /&gt;
* [http://interviews.slashdot.org/article.pl?sid=02/09/06/1343222 &amp;quot;Larry Wall On Perl, Religion, and...&amp;quot;] found to be the most related here. Larry Wall, the founder of Perl, uses the 'The Principal of Least Astonishment', which he introduced in Perl, to provide an explanation of faith.&lt;br /&gt;
&lt;br /&gt;
====Quraan====&lt;br /&gt;
Quraan is considered by Muslims and some non-Muslims to strongly obey both 'Least Astonishment' and 'Occam's razor' principles as nature do, which suggests that it was created by the same designer. This would prove several controversies as [http://en.wikipedia.org/wiki/Creation-evolution_controversy creation/evolution controversy], [http://en.wikipedia.org/wiki/Existence_of_God existence of god], [http://en.wikipedia.org/wiki/Miracle miracles] ...etc, as it supports other profits stories and their miracles.&lt;br /&gt;
* [http://www.searchtruth.com/list.php &amp;quot;Search the Truth&amp;quot;] provides a search tool in different interpretations of Quraan in different languages.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
This wiki is intended to be a Guide for Principle of Least Astonishment. It provides many links to online sources that explains the topic simply with easy-to-understand examples, and/or gives an idea where this principle can be used in real-life. These links should be helpful for the ones who want to learn more on this topic or understand the topic in more detail.&lt;br /&gt;
&lt;br /&gt;
This principle can be used in many different disciplines for a universal useful solution for good designs. But it should be taken in consideration that although the principle goes parallel with common sense it may not necessarily go with the convention.&lt;br /&gt;
&lt;br /&gt;
[[Image:LA_Science.gif]]&lt;br /&gt;
&lt;br /&gt;
==External Links by Field==&lt;br /&gt;
&lt;br /&gt;
===User Interface===&lt;br /&gt;
* [http://www.faqs.org/docs/artu/ch11s01.html &amp;quot;Applying the Rule of Least Surprise&amp;quot;] from ''[[The Art of Unix Programming]]'' by [[Eric S. Raymond|E.S. Raymond]]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Principle_of_least_astonishment &amp;quot;Wikipedia&amp;quot;]&lt;br /&gt;
* [http://www.geocities.com/krishna_kunchith/misc/bscs.html &amp;quot;Confessions of a Coder&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
===Internet===&lt;br /&gt;
* [http://news.bbc.co.uk/2/hi/technology/3129184.stm &amp;quot;Site finding system faces suspension&amp;quot;]&lt;br /&gt;
* [http://www.ibm.com/developerworks/web/library/us-cranky10.html &amp;quot;Applying the Rule of Least Surprise in webpages&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
===Programming and Coding===&lt;br /&gt;
* [http://c2.com/cgi/wiki?PrincipleOfLeastAstonishment &amp;quot;Principle of Least Astonishment at Portland Pattern Repository&amp;quot;] &lt;br /&gt;
* [http://andywibbels.com/post/1263 &amp;quot;Andy Wibbel&amp;quot;] &lt;br /&gt;
* [http://www.perlmonks.org/?node_id=553487 &amp;quot;On Interfaces and APIs&amp;quot;]&lt;br /&gt;
* [http://www.atalasoft.com/cs/blogs/stevehawley/archive/2006/02/27/9590.aspx &amp;quot;Steve’s Tech Talk&amp;quot;] &lt;br /&gt;
* [http://en.wikipedia.org/wiki/Thread_safety &amp;quot;Thread safety&amp;quot;] &lt;br /&gt;
&lt;br /&gt;
===Programming Language===&lt;br /&gt;
* [http://www.cs.arizona.edu/projects/sumatra/hallofshame/  &amp;quot;Java Violate the Principle of Least Astonishment&amp;quot;]&lt;br /&gt;
* [http://jooto.com/blog/index.php/2006/06/06/principle-of-least-astonishment/ &amp;quot;Example from Ruby in Rails&amp;quot;] &lt;br /&gt;
&lt;br /&gt;
===Engineering and Design===&lt;br /&gt;
* [http://www.iea.cc/browse.php?contID=what_is_ergonomics &amp;quot;International Ergonomics Association&amp;quot;]&lt;br /&gt;
* [http://mitpress.mit.edu/catalog/item/default.asp?tid=10141&amp;amp;ttype=2 &amp;quot;Book: Activity-Centered Design&amp;quot;]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Ergonomics Ergonomics]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/User-centered_design 'User Centered Design'] &lt;br /&gt;
* [http://en.wikipedia.org/wiki/Contextual_design 'Contextual Design']&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Human-computer_interaction Human computer interaction]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/List_of_human-computer_interaction_topics &amp;quot;Wikipedia List of human-computer interaction topics&amp;quot;]&lt;br /&gt;
* [http://www.usabilitynet.org/tools/contextualinquiry.htm &amp;quot;contextual inquiry&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
===Science and Nature===&lt;br /&gt;
* [http://ecommons.library.cornell.edu/retrieve/300/Art_of_Discovery_Oliver2.pdf &amp;quot;The Incomplete Guide to the Art of Discovery&amp;quot;], *.PDF '' by [http://www.mssu.edu/seg-vm/bio_jack_e__oliver.html Jack E. Oliver]&lt;br /&gt;
* [http://www.answersingenesis.org/tj/v9/i2/astonishment.asp &amp;quot;When Principle of Least Astonishment go wrong&amp;quot;]&lt;br /&gt;
* [http://plato.stanford.edu/entries/einstein-philscience/#5 &amp;quot;Einstein's Philosophy of Science&amp;quot;]&lt;br /&gt;
* [http://www.csicop.org/si/2000-09/laws.html &amp;quot;The laws of Nature&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
===Philosophy===&lt;br /&gt;
* [http://home.att.net/~p.caimi/schrodinger.html &amp;quot;What is Life?&amp;quot;] &lt;br /&gt;
&lt;br /&gt;
===Religion===&lt;br /&gt;
* [http://interviews.slashdot.org/article.pl?sid=02/09/06/1343222 &amp;quot;Larry Wall On Perl, Religion, and...&amp;quot;]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Existence_of_God Existence of God]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Intelligent_design Intelligent design of Universe].&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Existence_of_God Existence of God]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Argument_from_miracles Argument from miracles]&lt;br /&gt;
* [http://www.creationontheweb.com/content/view/5096/ &amp;quot;Occam’s Razor and creation/evolution&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==External Links by Term==&lt;br /&gt;
&lt;br /&gt;
===Principle of Least Astonishment===&lt;br /&gt;
* [http://www.ibm.com/developerworks/web/library/us-cranky10.html &amp;quot;Applying the Rule of Least Surprise in webpages&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
===Ergonomics===&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Ergonomics Ergonomics]&lt;br /&gt;
&lt;br /&gt;
===User Centered Design===&lt;br /&gt;
* [http://en.wikipedia.org/wiki/User-centered_design 'User Centered Design'] &lt;br /&gt;
&lt;br /&gt;
===Contextual Design===&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Contextual_design 'Contextual Design']&lt;br /&gt;
* [http://mitpress.mit.edu/catalog/item/default.asp?tid=10141&amp;amp;ttype=2 &amp;quot;Book: Activity-Centered Design&amp;quot;]&lt;br /&gt;
* [http://www.usabilitynet.org/tools/contextualinquiry.htm &amp;quot;contextual inquiry&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
===Law of Nature===&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Physical_law &amp;quot;Law of Nature&amp;quot;]&lt;br /&gt;
* [http://www.csicop.org/si/2000-09/laws.html &amp;quot;The laws of Nature&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
===Occam's razor or Parsimony===&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Occam%27s_razor#Philosophy_of_mind &amp;quot;Occam's razor&amp;quot;]  &lt;br /&gt;
* [http://en.wikipedia.org/wiki/Parsimony &amp;quot;Parsimony&amp;quot;],&lt;/div&gt;</summary>
		<author><name>Ndokuzo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_9_NT&amp;diff=7607</id>
		<title>CSC/ECE 517 Fall 2007/wiki2 9 NT</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_9_NT&amp;diff=7607"/>
		<updated>2007-10-25T00:48:09Z</updated>

		<summary type="html">&lt;p&gt;Ndokuzo: /* Religion */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''Principle of Least Astonishment. Write a guide to the Web pages on the Principle of Least Astonishment. Which should the reader look at for easy-to-understand examples? Which give a feel for where the principle should be used? Is this principle present in fields other than programming? Is the term used consistently in other disciplines?''&lt;br /&gt;
&lt;br /&gt;
==What is 'Principle of Least Astonishment'?==&lt;br /&gt;
&lt;br /&gt;
'Principle of Least Astonishment' or 'Rule of minimum surprise' asserts that the system will cause the least surprise for the user by being as consistent and predictable as possible, and therefore usable. Which imply that in case of an ambiguity or a conflict in the system, the behavior of the system should be the one which will least surprise the user. In computer science, this principle has a wide range of application in topics such as user-interface design, programming language design, and programming. This principle is used in various disciplines as well as computer science such as engineering, science, and philosophy which are covered later in this wiki. After this brief information about the principle of least astonishment, now we are going to talk more about the sources found online about this topic and how well they explore the topic.&lt;br /&gt;
&lt;br /&gt;
==Guide to Web pages on Principle of Least Astonishment in Programming==&lt;br /&gt;
&lt;br /&gt;
When you type the keyword “Principle of Least Astonishment” to Google, it returns about 35,800 web pages. Surprisingly, none of the web pages listed are good enough to explain the topic thoroughly by itself.&lt;br /&gt;
&lt;br /&gt;
Here, we are going to explain the top searches returned by the Google query and comment on how effective they are in presenting this topic. This section is divided into two subtopics where we list the links with the easy-to-understand examples and links that give a feel where this principle should be used, even though they are divided into these subtopics as the assignment question states, there is no strict boundaries between them. So, a topic that gives a feel where this principle is used may also give easy-to-understand examples to explain it.&lt;br /&gt;
&lt;br /&gt;
===Where should the reader look for easy-to-understand examples?===&lt;br /&gt;
&lt;br /&gt;
[http://c2.com/cgi/wiki?PrincipleOfLeastAstonishment &amp;quot;Principle of Least Astonishment at Portland Pattern Repository&amp;quot;] provides a simple explanation to the topic and gives a couple of easy-to-understand examples; this is one of the best sites that one should start to learn on this topic.&lt;br /&gt;
&lt;br /&gt;
[http://andywibbels.com/post/1263 &amp;quot;Andy Wibbel&amp;quot;] gives the easy-to-understand definition of the principle that is combined from different sources. This is a good web page to start to learn about the topic, but it does not give any examples and it does not present where this principle is used.&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Principle_of_least_astonishment &amp;quot;Wikipedia&amp;quot;] defines the Principle of Least Astonishment briefly, and gives two simple easy-to-understand real-life examples, this website can help one to understand what the principle is but it is not a very good page to understand the topic and its application in great detail at all.&lt;br /&gt;
&lt;br /&gt;
[http://jooto.com/blog/index.php/2006/06/06/principle-of-least-astonishment/ &amp;quot;Ethical Software&amp;quot;] is a blog of an instructor, Alex Bunardzic, where he shares his in class experience when he was teaching Principle of Least Astonishment. The example that he gave in class is the Ruby on Rails code where he suggests using &amp;lt;%yield%&amp;gt; instead of &amp;lt;%content_for_layout%&amp;gt; to demonstrate this principle. This web page is not a good start to learn the topic, but it gives the idea of the principle and it demonstrates it with the Ruby on Rails code which is very related to what we have been doing in our class.&lt;br /&gt;
&lt;br /&gt;
====Examples of Violation of the Principle====&lt;br /&gt;
[http://news.bbc.co.uk/2/hi/technology/3129184.stm &amp;quot;Site finding system&amp;quot;] is a topic appeared in BBC News on September, 2003 which gives an real-life example of violation of this principle, and explains what it had caused.&lt;br /&gt;
&lt;br /&gt;
[http://www.cs.arizona.edu/projects/sumatra/hallofshame/ &amp;quot;Java Hall of Shame&amp;quot;] presents some of the points where programming language Java does not obey the Principle of Least Astonishment.&lt;br /&gt;
&lt;br /&gt;
[http://maba.wordpress.com/2006/09/10/thunderbird-just-stole-me-30-minutes/ &amp;quot;Thunderbird just stole me 30 minutes&amp;quot;] is a blog written by Martin Backschat, where he mentions how he was astonished by the user-interface of Mozilla Thunderbird while trying to change his password.&lt;br /&gt;
&lt;br /&gt;
===Where should the reader look for to get a feel where the principle should be used?===&lt;br /&gt;
&lt;br /&gt;
====Web Page Design====&lt;br /&gt;
[http://www.ibm.com/developerworks/web/library/us-cranky10.html &amp;quot;Peter Seebach&amp;quot;] explores the Principle of Least Astonishment on the web pages, talks about the common issues in web pages that astonish viewers. This web page gives many easy-to-understand examples of how this principle being violated on web pages.&lt;br /&gt;
&lt;br /&gt;
====API Design and Programming====&lt;br /&gt;
[http://www.atalasoft.com/cs/blogs/stevehawley/archive/2006/02/27/9590.aspx &amp;quot;Steve’s Tech Talk&amp;quot;] gives examples of the Principle of Least Astonishment from a computer scientist’s perspective. The examples provided in this site are all about how to write code and API that would surprise the client least.&lt;br /&gt;
&lt;br /&gt;
[http://benpryor.com/blog/index.php?/archives/19-API-Design-The-Principle-of-Least-Surprise.html, &amp;quot;API Design&amp;quot;] emphasized the importance of following the principle of least surprise in API design. Since an API will be used my many consumers, it should be intuitive, naming conventions should be clear and understandable, and API overall should meet the consumers expectations which is what this principle states.&lt;br /&gt;
&lt;br /&gt;
====User Interface Design====&lt;br /&gt;
[http://www.faqs.org/docs/artu/ch11s01.html &amp;quot;The Art of Unix Programming&amp;quot;] explains what the principle is and how it can be used when designing user-interfaces.&lt;br /&gt;
&lt;br /&gt;
[http://ergo.human.cornell.edu/ahtutorials/interface.html, &amp;quot;Ergonomic Guidelines for UI Design&amp;quot;] lists the basic rules of thumb for designing good user interfaces, which of course includes following the Principle of Least Astonishment to be intuitive and consistent for the users of the system. &lt;br /&gt;
&lt;br /&gt;
[http://www.ibm.com/developerworks/web/library/wa-cranky75/index.html, &amp;quot;Simple is the the Sophisticated&amp;quot;] is an article by Peter Seebach on how applications with simpler user interfaces tend to dominate the ones with complicated interfaces which all ties in with what Principle of Least Astonishment states.&lt;br /&gt;
&lt;br /&gt;
== Least Astonishment in Other Disciplines==&lt;br /&gt;
The 'Principle of Least Astonishment' can be considered as a cross disciplinary law in our modern life. From software to machine design to modern philosophy it is considered as a valid test criteria to well designed system. While the system changes (IT, product design, law, science, ...) the principle name will changes as well, as it appear in different terms ('User Centered Design', Contextual_design, Law of Nature, Occam's razor, ...). May be one of the clear examples to define a good design using the current principle is [http://en.wikipedia.org/wiki/Physical_law Law of Nature], which define a solution -or well designed system- to be:&lt;br /&gt;
* True!&lt;br /&gt;
* Universal. They appear to apply everywhere in the universe. &lt;br /&gt;
* Simple. They are typically easily  expressed.&lt;br /&gt;
* Absolute. Nothing in the universe appears to affect them. &lt;br /&gt;
* Stable. Unchanged since first discovered.&lt;br /&gt;
* Omnipotent. Everything in the universe apparently must comply with them (according to observations).&lt;br /&gt;
* Conservative.&lt;br /&gt;
* Symmetry in space and time.&lt;br /&gt;
* Reversible in time.&lt;br /&gt;
&lt;br /&gt;
Certainly these criteria would define a good code or a user interface as a counter to law of nature. Which surprisingly, or in our case least surprisingly, the 'Principle of Least Astonishment' prove itself by being least surprise solution as it is true, universal, simple, absolute, stable, omnipotent, symmetry and reversible. Following is general outline where the principle is applied.&lt;br /&gt;
&lt;br /&gt;
===Engineering and Design===&lt;br /&gt;
Design of equipment/product/system/laws/environment for human interaction is a whole science which is called [http://en.wikipedia.org/wiki/Ergonomics Ergonomics]. Although, this science expands to contain other aspects such as physical, cognitive, and organizational ergonomics. More specific concepts that relate to ours will be [http://en.wikipedia.org/wiki/User-centered_design 'User Centered Design'] or [http://en.wikipedia.org/wiki/Contextual_design 'Contextual Design']. 'Contextual Design' support not only the principle of least surprise but also investigate into the context and motivation of user behavior to be adopted by the design. Certain enough this principle is applied to every aspect in our life; cars, buildings, traffic, education, ...etc.&lt;br /&gt;
&lt;br /&gt;
* [http://en.wikipedia.org/wiki/List_of_human-computer_interaction_topics &amp;quot;Wikipedia List of human-computer interaction topics&amp;quot;] provides a comprehensive list of topics related to the application of the human-computer interaction. [Other links].&lt;br /&gt;
&lt;br /&gt;
===Science and Nature===&lt;br /&gt;
The same principle is extended to science as well, where [http://en.wikipedia.org/wiki/Physical_law Law of Nature] is believed to carry the least surprise. As Einstein states, ''&amp;quot;To me, the most incomprehensible thing about the universe is that it is comprehensible&amp;quot; [http://www.csicop.org/si/2000-09/laws.html 2].'' A prove would be that many of the law of natural and major discoveries, as relativity, were found before it was directly observed, analytically or experimentally observed. Which illustrate that the Natural and the universe is a good design as well.&lt;br /&gt;
&lt;br /&gt;
* [http://ecommons.library.cornell.edu/retrieve/300/Art_of_Discovery_Oliver2.pdf &amp;quot;The Incomplete Guide to the Art of Discovery . PDF&amp;quot;], Page ''51,52'', '' by [http://www.mssu.edu/seg-vm/bio_jack_e__oliver.html Jack E. Oliver] introduce the 'Principal of Least Astonishment', or 'intuition' as a tool to be used to discover the nature and its laws.&lt;br /&gt;
&lt;br /&gt;
===Philosophy===&lt;br /&gt;
Another field where the principle apply is philosophy, where it is used to distinguish between several philosophical interpretation to the same controversy. While in philosophy it is more referred as [http://en.wikipedia.org/wiki/Occam%27s_razor#Philosophy_of_mind 'Occam's razor'] or [http://en.wikipedia.org/wiki/Parsimony 'Parsimony'], which is not identical to the current principle. 'Occam's razor' assumes that the most simple explanation, imply fewer assumption, is probably the most valid solution. Anyway, simple design is probably the least surprising one.&lt;br /&gt;
&lt;br /&gt;
* [http://home.att.net/~p.caimi/schrodinger.html &amp;quot;What is Life?&amp;quot;] a book by physicist Erwin Schrödinger providing one of the first usage of this principal in philosophy to provide an explanation for 'free will', and 'human consciousness'. It is worth to say that the DNA concept is first introduced through this book, while it hadn't been discovered yet. [Other links].&lt;br /&gt;
&lt;br /&gt;
===Religion===&lt;br /&gt;
'The Principal of Least Astonishment' and 'Occam's razor' are surprisingly used in religion. [http://en.wikipedia.org/wiki/Theism Theisms] use 'The Principal of Least Astonishment' to prove the [http://en.wikipedia.org/wiki/Existence_of_God Existence of God], and the [http://en.wikipedia.org/wiki/Intelligent_design Intelligent design of Universe]. In the other hand, [http://en.wikipedia.org/wiki/Atheism Atheisms] use 'Occam's razor' to argue [http://en.wikipedia.org/wiki/Existence_of_God Existence of God], and as an [http://en.wikipedia.org/wiki/Argument_from_miracles Argument from miracles].&lt;br /&gt;
&lt;br /&gt;
* [http://interviews.slashdot.org/article.pl?sid=02/09/06/1343222 &amp;quot;Larry Wall On Perl, Religion, and...&amp;quot;] found to be the most related here. Larry Wall, the founder of Perl, uses the 'The Principal of Least Astonishment', which he introduced in Perl, to provide an explanation of faith.&lt;br /&gt;
&lt;br /&gt;
====Quraan====&lt;br /&gt;
Quraan is considered by Muslims and some non-Muslims to strongly obey both 'Least Astonishment' and 'Occam's razor' principles as nature do, which suggests that it was created by the same designer. This would prove several controversies as [http://en.wikipedia.org/wiki/Creation-evolution_controversy creation/evolution controversy], [http://en.wikipedia.org/wiki/Existence_of_God existence of god], [http://en.wikipedia.org/wiki/Miracle miracles] ...etc, as it supports other profits stories and their miracles.&lt;br /&gt;
* [http://www.searchtruth.com/list.php &amp;quot;Search the Truth&amp;quot;] provides a search tool in different interpretations of Quraan in different languages.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
This wiki is intended to be a Guide for Principle of Least Astonishment. It provides many links to online sources that explains the topic simply with easy-to-understand examples, and/or gives an idea where this principle can be used in real-life. These links should be helpful for the ones who want to learn more on this topic or understand the topic in more detail.&lt;br /&gt;
&lt;br /&gt;
This principle can be used in many different disciplines for a universal useful solution for good designs. But it should be taken in consideration that although the principle goes parallel with common sense it may not necessarily go with the convention.&lt;br /&gt;
&lt;br /&gt;
[[Image:LA_Science.gif]]&lt;br /&gt;
&lt;br /&gt;
==External Links by Field==&lt;br /&gt;
&lt;br /&gt;
===User Interface===&lt;br /&gt;
* [http://www.faqs.org/docs/artu/ch11s01.html &amp;quot;Applying the Rule of Least Surprise&amp;quot;] from ''[[The Art of Unix Programming]]'' by [[Eric S. Raymond|E.S. Raymond]]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Principle_of_least_astonishment &amp;quot;Wikipedia&amp;quot;]&lt;br /&gt;
* [http://www.geocities.com/krishna_kunchith/misc/bscs.html &amp;quot;Confessions of a Coder&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
===Internet===&lt;br /&gt;
* [http://news.bbc.co.uk/2/hi/technology/3129184.stm &amp;quot;Site finding system faces suspension&amp;quot;]&lt;br /&gt;
* [http://www.ibm.com/developerworks/web/library/us-cranky10.html &amp;quot;Applying the Rule of Least Surprise in webpages&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
===Programming and Coding===&lt;br /&gt;
* [http://c2.com/cgi/wiki?PrincipleOfLeastAstonishment &amp;quot;Principle of Least Astonishment at Portland Pattern Repository&amp;quot;] &lt;br /&gt;
* [http://andywibbels.com/post/1263 &amp;quot;Andy Wibbel&amp;quot;] &lt;br /&gt;
* [http://www.perlmonks.org/?node_id=553487 &amp;quot;On Interfaces and APIs&amp;quot;]&lt;br /&gt;
* [http://www.atalasoft.com/cs/blogs/stevehawley/archive/2006/02/27/9590.aspx &amp;quot;Steve’s Tech Talk&amp;quot;] &lt;br /&gt;
* [http://en.wikipedia.org/wiki/Thread_safety &amp;quot;Thread safety&amp;quot;] &lt;br /&gt;
&lt;br /&gt;
===Programming Language===&lt;br /&gt;
* [http://www.cs.arizona.edu/projects/sumatra/hallofshame/  &amp;quot;Java Violate the Principle of Least Astonishment&amp;quot;]&lt;br /&gt;
* [http://jooto.com/blog/index.php/2006/06/06/principle-of-least-astonishment/ &amp;quot;Example from Ruby in Rails&amp;quot;] &lt;br /&gt;
&lt;br /&gt;
===Engineering and Design===&lt;br /&gt;
* [http://www.iea.cc/browse.php?contID=what_is_ergonomics &amp;quot;International Ergonomics Association&amp;quot;]&lt;br /&gt;
* [http://mitpress.mit.edu/catalog/item/default.asp?tid=10141&amp;amp;ttype=2 &amp;quot;Book: Activity-Centered Design&amp;quot;]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Ergonomics Ergonomics]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/User-centered_design 'User Centered Design'] &lt;br /&gt;
* [http://en.wikipedia.org/wiki/Contextual_design 'Contextual Design']&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Human-computer_interaction Human computer interaction]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/List_of_human-computer_interaction_topics &amp;quot;Wikipedia List of human-computer interaction topics&amp;quot;]&lt;br /&gt;
* [http://www.usabilitynet.org/tools/contextualinquiry.htm &amp;quot;contextual inquiry&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
===Science and Nature===&lt;br /&gt;
* [http://ecommons.library.cornell.edu/retrieve/300/Art_of_Discovery_Oliver2.pdf &amp;quot;The Incomplete Guide to the Art of Discovery&amp;quot;], *.PDF '' by [http://www.mssu.edu/seg-vm/bio_jack_e__oliver.html Jack E. Oliver]&lt;br /&gt;
* [http://www.answersingenesis.org/tj/v9/i2/astonishment.asp &amp;quot;When Principle of Least Astonishment go wrong&amp;quot;]&lt;br /&gt;
* [http://plato.stanford.edu/entries/einstein-philscience/#5 &amp;quot;Einstein's Philosophy of Science&amp;quot;]&lt;br /&gt;
* [http://www.csicop.org/si/2000-09/laws.html &amp;quot;The laws of Nature&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
===Philosophy===&lt;br /&gt;
* [http://home.att.net/~p.caimi/schrodinger.html &amp;quot;What is Life?&amp;quot;] &lt;br /&gt;
&lt;br /&gt;
===Religion===&lt;br /&gt;
* [http://interviews.slashdot.org/article.pl?sid=02/09/06/1343222 &amp;quot;Larry Wall On Perl, Religion, and...&amp;quot;]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Existence_of_God Existence of God]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Intelligent_design Intelligent design of Universe].&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Existence_of_God Existence of God]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Argument_from_miracles Argument from miracles]&lt;br /&gt;
* [http://www.creationontheweb.com/content/view/5096/ &amp;quot;Occam’s Razor and creation/evolution&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
===Others===&lt;br /&gt;
&lt;br /&gt;
==External Links by Term==&lt;br /&gt;
&lt;br /&gt;
===Principle of Least Astonishment===&lt;br /&gt;
* [http://www.ibm.com/developerworks/web/library/us-cranky10.html &amp;quot;Applying the Rule of Least Surprise in webpages&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
===Ergonomics===&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Ergonomics Ergonomics]&lt;br /&gt;
&lt;br /&gt;
===User Centered Design===&lt;br /&gt;
* [http://en.wikipedia.org/wiki/User-centered_design 'User Centered Design'] &lt;br /&gt;
&lt;br /&gt;
===Contextual Design===&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Contextual_design 'Contextual Design']&lt;br /&gt;
* [http://mitpress.mit.edu/catalog/item/default.asp?tid=10141&amp;amp;ttype=2 &amp;quot;Book: Activity-Centered Design&amp;quot;]&lt;br /&gt;
* [http://www.usabilitynet.org/tools/contextualinquiry.htm &amp;quot;contextual inquiry&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
===Law of Nature===&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Physical_law &amp;quot;Law of Nature&amp;quot;]&lt;br /&gt;
* [http://www.csicop.org/si/2000-09/laws.html &amp;quot;The laws of Nature&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
===Occam's razor or Parsimony===&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Occam%27s_razor#Philosophy_of_mind &amp;quot;Occam's razor&amp;quot;]  &lt;br /&gt;
* [http://en.wikipedia.org/wiki/Parsimony &amp;quot;Parsimony&amp;quot;],&lt;/div&gt;</summary>
		<author><name>Ndokuzo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_9_NT&amp;diff=7606</id>
		<title>CSC/ECE 517 Fall 2007/wiki2 9 NT</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_9_NT&amp;diff=7606"/>
		<updated>2007-10-25T00:47:59Z</updated>

		<summary type="html">&lt;p&gt;Ndokuzo: /* Science and Nature */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''Principle of Least Astonishment. Write a guide to the Web pages on the Principle of Least Astonishment. Which should the reader look at for easy-to-understand examples? Which give a feel for where the principle should be used? Is this principle present in fields other than programming? Is the term used consistently in other disciplines?''&lt;br /&gt;
&lt;br /&gt;
==What is 'Principle of Least Astonishment'?==&lt;br /&gt;
&lt;br /&gt;
'Principle of Least Astonishment' or 'Rule of minimum surprise' asserts that the system will cause the least surprise for the user by being as consistent and predictable as possible, and therefore usable. Which imply that in case of an ambiguity or a conflict in the system, the behavior of the system should be the one which will least surprise the user. In computer science, this principle has a wide range of application in topics such as user-interface design, programming language design, and programming. This principle is used in various disciplines as well as computer science such as engineering, science, and philosophy which are covered later in this wiki. After this brief information about the principle of least astonishment, now we are going to talk more about the sources found online about this topic and how well they explore the topic.&lt;br /&gt;
&lt;br /&gt;
==Guide to Web pages on Principle of Least Astonishment in Programming==&lt;br /&gt;
&lt;br /&gt;
When you type the keyword “Principle of Least Astonishment” to Google, it returns about 35,800 web pages. Surprisingly, none of the web pages listed are good enough to explain the topic thoroughly by itself.&lt;br /&gt;
&lt;br /&gt;
Here, we are going to explain the top searches returned by the Google query and comment on how effective they are in presenting this topic. This section is divided into two subtopics where we list the links with the easy-to-understand examples and links that give a feel where this principle should be used, even though they are divided into these subtopics as the assignment question states, there is no strict boundaries between them. So, a topic that gives a feel where this principle is used may also give easy-to-understand examples to explain it.&lt;br /&gt;
&lt;br /&gt;
===Where should the reader look for easy-to-understand examples?===&lt;br /&gt;
&lt;br /&gt;
[http://c2.com/cgi/wiki?PrincipleOfLeastAstonishment &amp;quot;Principle of Least Astonishment at Portland Pattern Repository&amp;quot;] provides a simple explanation to the topic and gives a couple of easy-to-understand examples; this is one of the best sites that one should start to learn on this topic.&lt;br /&gt;
&lt;br /&gt;
[http://andywibbels.com/post/1263 &amp;quot;Andy Wibbel&amp;quot;] gives the easy-to-understand definition of the principle that is combined from different sources. This is a good web page to start to learn about the topic, but it does not give any examples and it does not present where this principle is used.&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Principle_of_least_astonishment &amp;quot;Wikipedia&amp;quot;] defines the Principle of Least Astonishment briefly, and gives two simple easy-to-understand real-life examples, this website can help one to understand what the principle is but it is not a very good page to understand the topic and its application in great detail at all.&lt;br /&gt;
&lt;br /&gt;
[http://jooto.com/blog/index.php/2006/06/06/principle-of-least-astonishment/ &amp;quot;Ethical Software&amp;quot;] is a blog of an instructor, Alex Bunardzic, where he shares his in class experience when he was teaching Principle of Least Astonishment. The example that he gave in class is the Ruby on Rails code where he suggests using &amp;lt;%yield%&amp;gt; instead of &amp;lt;%content_for_layout%&amp;gt; to demonstrate this principle. This web page is not a good start to learn the topic, but it gives the idea of the principle and it demonstrates it with the Ruby on Rails code which is very related to what we have been doing in our class.&lt;br /&gt;
&lt;br /&gt;
====Examples of Violation of the Principle====&lt;br /&gt;
[http://news.bbc.co.uk/2/hi/technology/3129184.stm &amp;quot;Site finding system&amp;quot;] is a topic appeared in BBC News on September, 2003 which gives an real-life example of violation of this principle, and explains what it had caused.&lt;br /&gt;
&lt;br /&gt;
[http://www.cs.arizona.edu/projects/sumatra/hallofshame/ &amp;quot;Java Hall of Shame&amp;quot;] presents some of the points where programming language Java does not obey the Principle of Least Astonishment.&lt;br /&gt;
&lt;br /&gt;
[http://maba.wordpress.com/2006/09/10/thunderbird-just-stole-me-30-minutes/ &amp;quot;Thunderbird just stole me 30 minutes&amp;quot;] is a blog written by Martin Backschat, where he mentions how he was astonished by the user-interface of Mozilla Thunderbird while trying to change his password.&lt;br /&gt;
&lt;br /&gt;
===Where should the reader look for to get a feel where the principle should be used?===&lt;br /&gt;
&lt;br /&gt;
====Web Page Design====&lt;br /&gt;
[http://www.ibm.com/developerworks/web/library/us-cranky10.html &amp;quot;Peter Seebach&amp;quot;] explores the Principle of Least Astonishment on the web pages, talks about the common issues in web pages that astonish viewers. This web page gives many easy-to-understand examples of how this principle being violated on web pages.&lt;br /&gt;
&lt;br /&gt;
====API Design and Programming====&lt;br /&gt;
[http://www.atalasoft.com/cs/blogs/stevehawley/archive/2006/02/27/9590.aspx &amp;quot;Steve’s Tech Talk&amp;quot;] gives examples of the Principle of Least Astonishment from a computer scientist’s perspective. The examples provided in this site are all about how to write code and API that would surprise the client least.&lt;br /&gt;
&lt;br /&gt;
[http://benpryor.com/blog/index.php?/archives/19-API-Design-The-Principle-of-Least-Surprise.html, &amp;quot;API Design&amp;quot;] emphasized the importance of following the principle of least surprise in API design. Since an API will be used my many consumers, it should be intuitive, naming conventions should be clear and understandable, and API overall should meet the consumers expectations which is what this principle states.&lt;br /&gt;
&lt;br /&gt;
====User Interface Design====&lt;br /&gt;
[http://www.faqs.org/docs/artu/ch11s01.html &amp;quot;The Art of Unix Programming&amp;quot;] explains what the principle is and how it can be used when designing user-interfaces.&lt;br /&gt;
&lt;br /&gt;
[http://ergo.human.cornell.edu/ahtutorials/interface.html, &amp;quot;Ergonomic Guidelines for UI Design&amp;quot;] lists the basic rules of thumb for designing good user interfaces, which of course includes following the Principle of Least Astonishment to be intuitive and consistent for the users of the system. &lt;br /&gt;
&lt;br /&gt;
[http://www.ibm.com/developerworks/web/library/wa-cranky75/index.html, &amp;quot;Simple is the the Sophisticated&amp;quot;] is an article by Peter Seebach on how applications with simpler user interfaces tend to dominate the ones with complicated interfaces which all ties in with what Principle of Least Astonishment states.&lt;br /&gt;
&lt;br /&gt;
== Least Astonishment in Other Disciplines==&lt;br /&gt;
The 'Principle of Least Astonishment' can be considered as a cross disciplinary law in our modern life. From software to machine design to modern philosophy it is considered as a valid test criteria to well designed system. While the system changes (IT, product design, law, science, ...) the principle name will changes as well, as it appear in different terms ('User Centered Design', Contextual_design, Law of Nature, Occam's razor, ...). May be one of the clear examples to define a good design using the current principle is [http://en.wikipedia.org/wiki/Physical_law Law of Nature], which define a solution -or well designed system- to be:&lt;br /&gt;
* True!&lt;br /&gt;
* Universal. They appear to apply everywhere in the universe. &lt;br /&gt;
* Simple. They are typically easily  expressed.&lt;br /&gt;
* Absolute. Nothing in the universe appears to affect them. &lt;br /&gt;
* Stable. Unchanged since first discovered.&lt;br /&gt;
* Omnipotent. Everything in the universe apparently must comply with them (according to observations).&lt;br /&gt;
* Conservative.&lt;br /&gt;
* Symmetry in space and time.&lt;br /&gt;
* Reversible in time.&lt;br /&gt;
&lt;br /&gt;
Certainly these criteria would define a good code or a user interface as a counter to law of nature. Which surprisingly, or in our case least surprisingly, the 'Principle of Least Astonishment' prove itself by being least surprise solution as it is true, universal, simple, absolute, stable, omnipotent, symmetry and reversible. Following is general outline where the principle is applied.&lt;br /&gt;
&lt;br /&gt;
===Engineering and Design===&lt;br /&gt;
Design of equipment/product/system/laws/environment for human interaction is a whole science which is called [http://en.wikipedia.org/wiki/Ergonomics Ergonomics]. Although, this science expands to contain other aspects such as physical, cognitive, and organizational ergonomics. More specific concepts that relate to ours will be [http://en.wikipedia.org/wiki/User-centered_design 'User Centered Design'] or [http://en.wikipedia.org/wiki/Contextual_design 'Contextual Design']. 'Contextual Design' support not only the principle of least surprise but also investigate into the context and motivation of user behavior to be adopted by the design. Certain enough this principle is applied to every aspect in our life; cars, buildings, traffic, education, ...etc.&lt;br /&gt;
&lt;br /&gt;
* [http://en.wikipedia.org/wiki/List_of_human-computer_interaction_topics &amp;quot;Wikipedia List of human-computer interaction topics&amp;quot;] provides a comprehensive list of topics related to the application of the human-computer interaction. [Other links].&lt;br /&gt;
&lt;br /&gt;
===Science and Nature===&lt;br /&gt;
The same principle is extended to science as well, where [http://en.wikipedia.org/wiki/Physical_law Law of Nature] is believed to carry the least surprise. As Einstein states, ''&amp;quot;To me, the most incomprehensible thing about the universe is that it is comprehensible&amp;quot; [http://www.csicop.org/si/2000-09/laws.html 2].'' A prove would be that many of the law of natural and major discoveries, as relativity, were found before it was directly observed, analytically or experimentally observed. Which illustrate that the Natural and the universe is a good design as well.&lt;br /&gt;
&lt;br /&gt;
* [http://ecommons.library.cornell.edu/retrieve/300/Art_of_Discovery_Oliver2.pdf &amp;quot;The Incomplete Guide to the Art of Discovery . PDF&amp;quot;], Page ''51,52'', '' by [http://www.mssu.edu/seg-vm/bio_jack_e__oliver.html Jack E. Oliver] introduce the 'Principal of Least Astonishment', or 'intuition' as a tool to be used to discover the nature and its laws.&lt;br /&gt;
&lt;br /&gt;
===Philosophy===&lt;br /&gt;
Another field where the principle apply is philosophy, where it is used to distinguish between several philosophical interpretation to the same controversy. While in philosophy it is more referred as [http://en.wikipedia.org/wiki/Occam%27s_razor#Philosophy_of_mind 'Occam's razor'] or [http://en.wikipedia.org/wiki/Parsimony 'Parsimony'], which is not identical to the current principle. 'Occam's razor' assumes that the most simple explanation, imply fewer assumption, is probably the most valid solution. Anyway, simple design is probably the least surprising one.&lt;br /&gt;
&lt;br /&gt;
* [http://home.att.net/~p.caimi/schrodinger.html &amp;quot;What is Life?&amp;quot;] a book by physicist Erwin Schrödinger providing one of the first usage of this principal in philosophy to provide an explanation for 'free will', and 'human consciousness'. It is worth to say that the DNA concept is first introduced through this book, while it hadn't been discovered yet. [Other links].&lt;br /&gt;
&lt;br /&gt;
===Religion===&lt;br /&gt;
'The Principal of Least Astonishment' and 'Occam's razor' are surprisingly used in religion. [http://en.wikipedia.org/wiki/Theism Theisms] use 'The Principal of Least Astonishment' to prove the [http://en.wikipedia.org/wiki/Existence_of_God Existence of God], and the [http://en.wikipedia.org/wiki/Intelligent_design Intelligent design of Universe]. In the other hand, [http://en.wikipedia.org/wiki/Atheism Atheisms] use 'Occam's razor' to argue [http://en.wikipedia.org/wiki/Existence_of_God Existence of God], and as an [http://en.wikipedia.org/wiki/Argument_from_miracles Argument from miracles].&lt;br /&gt;
&lt;br /&gt;
* [http://interviews.slashdot.org/article.pl?sid=02/09/06/1343222 &amp;quot;Larry Wall On Perl, Religion, and...&amp;quot;] found to be the most related here. Larry Wall, the founder of Perl, uses the 'The Principal of Least Astonishment', which he introduced in Perl, to provide an explanation of faith. [Other links].&lt;br /&gt;
&lt;br /&gt;
====Quraan====&lt;br /&gt;
Quraan is considered by Muslims and some non-Muslims to strongly obey both 'Least Astonishment' and 'Occam's razor' principles as nature do, which suggests that it was created by the same designer. This would prove several controversies as [http://en.wikipedia.org/wiki/Creation-evolution_controversy creation/evolution controversy], [http://en.wikipedia.org/wiki/Existence_of_God existence of god], [http://en.wikipedia.org/wiki/Miracle miracles] ...etc, as it supports other profits stories and their miracles.&lt;br /&gt;
* [http://www.searchtruth.com/list.php &amp;quot;Search the Truth&amp;quot;] provides a search tool in different interpretations of Quraan in different languages.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
This wiki is intended to be a Guide for Principle of Least Astonishment. It provides many links to online sources that explains the topic simply with easy-to-understand examples, and/or gives an idea where this principle can be used in real-life. These links should be helpful for the ones who want to learn more on this topic or understand the topic in more detail.&lt;br /&gt;
&lt;br /&gt;
This principle can be used in many different disciplines for a universal useful solution for good designs. But it should be taken in consideration that although the principle goes parallel with common sense it may not necessarily go with the convention.&lt;br /&gt;
&lt;br /&gt;
[[Image:LA_Science.gif]]&lt;br /&gt;
&lt;br /&gt;
==External Links by Field==&lt;br /&gt;
&lt;br /&gt;
===User Interface===&lt;br /&gt;
* [http://www.faqs.org/docs/artu/ch11s01.html &amp;quot;Applying the Rule of Least Surprise&amp;quot;] from ''[[The Art of Unix Programming]]'' by [[Eric S. Raymond|E.S. Raymond]]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Principle_of_least_astonishment &amp;quot;Wikipedia&amp;quot;]&lt;br /&gt;
* [http://www.geocities.com/krishna_kunchith/misc/bscs.html &amp;quot;Confessions of a Coder&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
===Internet===&lt;br /&gt;
* [http://news.bbc.co.uk/2/hi/technology/3129184.stm &amp;quot;Site finding system faces suspension&amp;quot;]&lt;br /&gt;
* [http://www.ibm.com/developerworks/web/library/us-cranky10.html &amp;quot;Applying the Rule of Least Surprise in webpages&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
===Programming and Coding===&lt;br /&gt;
* [http://c2.com/cgi/wiki?PrincipleOfLeastAstonishment &amp;quot;Principle of Least Astonishment at Portland Pattern Repository&amp;quot;] &lt;br /&gt;
* [http://andywibbels.com/post/1263 &amp;quot;Andy Wibbel&amp;quot;] &lt;br /&gt;
* [http://www.perlmonks.org/?node_id=553487 &amp;quot;On Interfaces and APIs&amp;quot;]&lt;br /&gt;
* [http://www.atalasoft.com/cs/blogs/stevehawley/archive/2006/02/27/9590.aspx &amp;quot;Steve’s Tech Talk&amp;quot;] &lt;br /&gt;
* [http://en.wikipedia.org/wiki/Thread_safety &amp;quot;Thread safety&amp;quot;] &lt;br /&gt;
&lt;br /&gt;
===Programming Language===&lt;br /&gt;
* [http://www.cs.arizona.edu/projects/sumatra/hallofshame/  &amp;quot;Java Violate the Principle of Least Astonishment&amp;quot;]&lt;br /&gt;
* [http://jooto.com/blog/index.php/2006/06/06/principle-of-least-astonishment/ &amp;quot;Example from Ruby in Rails&amp;quot;] &lt;br /&gt;
&lt;br /&gt;
===Engineering and Design===&lt;br /&gt;
* [http://www.iea.cc/browse.php?contID=what_is_ergonomics &amp;quot;International Ergonomics Association&amp;quot;]&lt;br /&gt;
* [http://mitpress.mit.edu/catalog/item/default.asp?tid=10141&amp;amp;ttype=2 &amp;quot;Book: Activity-Centered Design&amp;quot;]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Ergonomics Ergonomics]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/User-centered_design 'User Centered Design'] &lt;br /&gt;
* [http://en.wikipedia.org/wiki/Contextual_design 'Contextual Design']&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Human-computer_interaction Human computer interaction]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/List_of_human-computer_interaction_topics &amp;quot;Wikipedia List of human-computer interaction topics&amp;quot;]&lt;br /&gt;
* [http://www.usabilitynet.org/tools/contextualinquiry.htm &amp;quot;contextual inquiry&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
===Science and Nature===&lt;br /&gt;
* [http://ecommons.library.cornell.edu/retrieve/300/Art_of_Discovery_Oliver2.pdf &amp;quot;The Incomplete Guide to the Art of Discovery&amp;quot;], *.PDF '' by [http://www.mssu.edu/seg-vm/bio_jack_e__oliver.html Jack E. Oliver]&lt;br /&gt;
* [http://www.answersingenesis.org/tj/v9/i2/astonishment.asp &amp;quot;When Principle of Least Astonishment go wrong&amp;quot;]&lt;br /&gt;
* [http://plato.stanford.edu/entries/einstein-philscience/#5 &amp;quot;Einstein's Philosophy of Science&amp;quot;]&lt;br /&gt;
* [http://www.csicop.org/si/2000-09/laws.html &amp;quot;The laws of Nature&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
===Philosophy===&lt;br /&gt;
* [http://home.att.net/~p.caimi/schrodinger.html &amp;quot;What is Life?&amp;quot;] &lt;br /&gt;
&lt;br /&gt;
===Religion===&lt;br /&gt;
* [http://interviews.slashdot.org/article.pl?sid=02/09/06/1343222 &amp;quot;Larry Wall On Perl, Religion, and...&amp;quot;]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Existence_of_God Existence of God]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Intelligent_design Intelligent design of Universe].&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Existence_of_God Existence of God]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Argument_from_miracles Argument from miracles]&lt;br /&gt;
* [http://www.creationontheweb.com/content/view/5096/ &amp;quot;Occam’s Razor and creation/evolution&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
===Others===&lt;br /&gt;
&lt;br /&gt;
==External Links by Term==&lt;br /&gt;
&lt;br /&gt;
===Principle of Least Astonishment===&lt;br /&gt;
* [http://www.ibm.com/developerworks/web/library/us-cranky10.html &amp;quot;Applying the Rule of Least Surprise in webpages&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
===Ergonomics===&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Ergonomics Ergonomics]&lt;br /&gt;
&lt;br /&gt;
===User Centered Design===&lt;br /&gt;
* [http://en.wikipedia.org/wiki/User-centered_design 'User Centered Design'] &lt;br /&gt;
&lt;br /&gt;
===Contextual Design===&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Contextual_design 'Contextual Design']&lt;br /&gt;
* [http://mitpress.mit.edu/catalog/item/default.asp?tid=10141&amp;amp;ttype=2 &amp;quot;Book: Activity-Centered Design&amp;quot;]&lt;br /&gt;
* [http://www.usabilitynet.org/tools/contextualinquiry.htm &amp;quot;contextual inquiry&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
===Law of Nature===&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Physical_law &amp;quot;Law of Nature&amp;quot;]&lt;br /&gt;
* [http://www.csicop.org/si/2000-09/laws.html &amp;quot;The laws of Nature&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
===Occam's razor or Parsimony===&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Occam%27s_razor#Philosophy_of_mind &amp;quot;Occam's razor&amp;quot;]  &lt;br /&gt;
* [http://en.wikipedia.org/wiki/Parsimony &amp;quot;Parsimony&amp;quot;],&lt;/div&gt;</summary>
		<author><name>Ndokuzo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_9_NT&amp;diff=7604</id>
		<title>CSC/ECE 517 Fall 2007/wiki2 9 NT</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_9_NT&amp;diff=7604"/>
		<updated>2007-10-25T00:47:28Z</updated>

		<summary type="html">&lt;p&gt;Ndokuzo: /* Others */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''Principle of Least Astonishment. Write a guide to the Web pages on the Principle of Least Astonishment. Which should the reader look at for easy-to-understand examples? Which give a feel for where the principle should be used? Is this principle present in fields other than programming? Is the term used consistently in other disciplines?''&lt;br /&gt;
&lt;br /&gt;
==What is 'Principle of Least Astonishment'?==&lt;br /&gt;
&lt;br /&gt;
'Principle of Least Astonishment' or 'Rule of minimum surprise' asserts that the system will cause the least surprise for the user by being as consistent and predictable as possible, and therefore usable. Which imply that in case of an ambiguity or a conflict in the system, the behavior of the system should be the one which will least surprise the user. In computer science, this principle has a wide range of application in topics such as user-interface design, programming language design, and programming. This principle is used in various disciplines as well as computer science such as engineering, science, and philosophy which are covered later in this wiki. After this brief information about the principle of least astonishment, now we are going to talk more about the sources found online about this topic and how well they explore the topic.&lt;br /&gt;
&lt;br /&gt;
==Guide to Web pages on Principle of Least Astonishment in Programming==&lt;br /&gt;
&lt;br /&gt;
When you type the keyword “Principle of Least Astonishment” to Google, it returns about 35,800 web pages. Surprisingly, none of the web pages listed are good enough to explain the topic thoroughly by itself.&lt;br /&gt;
&lt;br /&gt;
Here, we are going to explain the top searches returned by the Google query and comment on how effective they are in presenting this topic. This section is divided into two subtopics where we list the links with the easy-to-understand examples and links that give a feel where this principle should be used, even though they are divided into these subtopics as the assignment question states, there is no strict boundaries between them. So, a topic that gives a feel where this principle is used may also give easy-to-understand examples to explain it.&lt;br /&gt;
&lt;br /&gt;
===Where should the reader look for easy-to-understand examples?===&lt;br /&gt;
&lt;br /&gt;
[http://c2.com/cgi/wiki?PrincipleOfLeastAstonishment &amp;quot;Principle of Least Astonishment at Portland Pattern Repository&amp;quot;] provides a simple explanation to the topic and gives a couple of easy-to-understand examples; this is one of the best sites that one should start to learn on this topic.&lt;br /&gt;
&lt;br /&gt;
[http://andywibbels.com/post/1263 &amp;quot;Andy Wibbel&amp;quot;] gives the easy-to-understand definition of the principle that is combined from different sources. This is a good web page to start to learn about the topic, but it does not give any examples and it does not present where this principle is used.&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Principle_of_least_astonishment &amp;quot;Wikipedia&amp;quot;] defines the Principle of Least Astonishment briefly, and gives two simple easy-to-understand real-life examples, this website can help one to understand what the principle is but it is not a very good page to understand the topic and its application in great detail at all.&lt;br /&gt;
&lt;br /&gt;
[http://jooto.com/blog/index.php/2006/06/06/principle-of-least-astonishment/ &amp;quot;Ethical Software&amp;quot;] is a blog of an instructor, Alex Bunardzic, where he shares his in class experience when he was teaching Principle of Least Astonishment. The example that he gave in class is the Ruby on Rails code where he suggests using &amp;lt;%yield%&amp;gt; instead of &amp;lt;%content_for_layout%&amp;gt; to demonstrate this principle. This web page is not a good start to learn the topic, but it gives the idea of the principle and it demonstrates it with the Ruby on Rails code which is very related to what we have been doing in our class.&lt;br /&gt;
&lt;br /&gt;
====Examples of Violation of the Principle====&lt;br /&gt;
[http://news.bbc.co.uk/2/hi/technology/3129184.stm &amp;quot;Site finding system&amp;quot;] is a topic appeared in BBC News on September, 2003 which gives an real-life example of violation of this principle, and explains what it had caused.&lt;br /&gt;
&lt;br /&gt;
[http://www.cs.arizona.edu/projects/sumatra/hallofshame/ &amp;quot;Java Hall of Shame&amp;quot;] presents some of the points where programming language Java does not obey the Principle of Least Astonishment.&lt;br /&gt;
&lt;br /&gt;
[http://maba.wordpress.com/2006/09/10/thunderbird-just-stole-me-30-minutes/ &amp;quot;Thunderbird just stole me 30 minutes&amp;quot;] is a blog written by Martin Backschat, where he mentions how he was astonished by the user-interface of Mozilla Thunderbird while trying to change his password.&lt;br /&gt;
&lt;br /&gt;
===Where should the reader look for to get a feel where the principle should be used?===&lt;br /&gt;
&lt;br /&gt;
====Web Page Design====&lt;br /&gt;
[http://www.ibm.com/developerworks/web/library/us-cranky10.html &amp;quot;Peter Seebach&amp;quot;] explores the Principle of Least Astonishment on the web pages, talks about the common issues in web pages that astonish viewers. This web page gives many easy-to-understand examples of how this principle being violated on web pages.&lt;br /&gt;
&lt;br /&gt;
====API Design and Programming====&lt;br /&gt;
[http://www.atalasoft.com/cs/blogs/stevehawley/archive/2006/02/27/9590.aspx &amp;quot;Steve’s Tech Talk&amp;quot;] gives examples of the Principle of Least Astonishment from a computer scientist’s perspective. The examples provided in this site are all about how to write code and API that would surprise the client least.&lt;br /&gt;
&lt;br /&gt;
[http://benpryor.com/blog/index.php?/archives/19-API-Design-The-Principle-of-Least-Surprise.html, &amp;quot;API Design&amp;quot;] emphasized the importance of following the principle of least surprise in API design. Since an API will be used my many consumers, it should be intuitive, naming conventions should be clear and understandable, and API overall should meet the consumers expectations which is what this principle states.&lt;br /&gt;
&lt;br /&gt;
====User Interface Design====&lt;br /&gt;
[http://www.faqs.org/docs/artu/ch11s01.html &amp;quot;The Art of Unix Programming&amp;quot;] explains what the principle is and how it can be used when designing user-interfaces.&lt;br /&gt;
&lt;br /&gt;
[http://ergo.human.cornell.edu/ahtutorials/interface.html, &amp;quot;Ergonomic Guidelines for UI Design&amp;quot;] lists the basic rules of thumb for designing good user interfaces, which of course includes following the Principle of Least Astonishment to be intuitive and consistent for the users of the system. &lt;br /&gt;
&lt;br /&gt;
[http://www.ibm.com/developerworks/web/library/wa-cranky75/index.html, &amp;quot;Simple is the the Sophisticated&amp;quot;] is an article by Peter Seebach on how applications with simpler user interfaces tend to dominate the ones with complicated interfaces which all ties in with what Principle of Least Astonishment states.&lt;br /&gt;
&lt;br /&gt;
== Least Astonishment in Other Disciplines==&lt;br /&gt;
The 'Principle of Least Astonishment' can be considered as a cross disciplinary law in our modern life. From software to machine design to modern philosophy it is considered as a valid test criteria to well designed system. While the system changes (IT, product design, law, science, ...) the principle name will changes as well, as it appear in different terms ('User Centered Design', Contextual_design, Law of Nature, Occam's razor, ...). May be one of the clear examples to define a good design using the current principle is [http://en.wikipedia.org/wiki/Physical_law Law of Nature], which define a solution -or well designed system- to be:&lt;br /&gt;
* True!&lt;br /&gt;
* Universal. They appear to apply everywhere in the universe. &lt;br /&gt;
* Simple. They are typically easily  expressed.&lt;br /&gt;
* Absolute. Nothing in the universe appears to affect them. &lt;br /&gt;
* Stable. Unchanged since first discovered.&lt;br /&gt;
* Omnipotent. Everything in the universe apparently must comply with them (according to observations).&lt;br /&gt;
* Conservative.&lt;br /&gt;
* Symmetry in space and time.&lt;br /&gt;
* Reversible in time.&lt;br /&gt;
&lt;br /&gt;
Certainly these criteria would define a good code or a user interface as a counter to law of nature. Which surprisingly, or in our case least surprisingly, the 'Principle of Least Astonishment' prove itself by being least surprise solution as it is true, universal, simple, absolute, stable, omnipotent, symmetry and reversible. Following is general outline where the principle is applied.&lt;br /&gt;
&lt;br /&gt;
===Engineering and Design===&lt;br /&gt;
Design of equipment/product/system/laws/environment for human interaction is a whole science which is called [http://en.wikipedia.org/wiki/Ergonomics Ergonomics]. Although, this science expands to contain other aspects such as physical, cognitive, and organizational ergonomics. More specific concepts that relate to ours will be [http://en.wikipedia.org/wiki/User-centered_design 'User Centered Design'] or [http://en.wikipedia.org/wiki/Contextual_design 'Contextual Design']. 'Contextual Design' support not only the principle of least surprise but also investigate into the context and motivation of user behavior to be adopted by the design. Certain enough this principle is applied to every aspect in our life; cars, buildings, traffic, education, ...etc.&lt;br /&gt;
&lt;br /&gt;
* [http://en.wikipedia.org/wiki/List_of_human-computer_interaction_topics &amp;quot;Wikipedia List of human-computer interaction topics&amp;quot;] provides a comprehensive list of topics related to the application of the human-computer interaction. [Other links].&lt;br /&gt;
&lt;br /&gt;
===Science and Nature===&lt;br /&gt;
The same principle is extended to science as well, where [http://en.wikipedia.org/wiki/Physical_law Law of Nature] is believed to carry the least surprise. As Einstein states, ''&amp;quot;To me, the most incomprehensible thing about the universe is that it is comprehensible&amp;quot; [http://www.csicop.org/si/2000-09/laws.html 2].'' A prove would be that many of the law of natural and major discoveries, as relativity, were found before it was directly observed, analytically or experimentally observed. Which illustrate that the Natural and the universe is a good design as well.&lt;br /&gt;
&lt;br /&gt;
* [http://ecommons.library.cornell.edu/retrieve/300/Art_of_Discovery_Oliver2.pdf &amp;quot;The Incomplete Guide to the Art of Discovery . PDF&amp;quot;], Page ''51,52'', '' by [http://www.mssu.edu/seg-vm/bio_jack_e__oliver.html Jack E. Oliver] introduce the 'Principal of Least Astonishment', or 'intuition' as a tool to be used to discover the nature and its laws. [Other links].&lt;br /&gt;
&lt;br /&gt;
===Philosophy===&lt;br /&gt;
Another field where the principle apply is philosophy, where it is used to distinguish between several philosophical interpretation to the same controversy. While in philosophy it is more referred as [http://en.wikipedia.org/wiki/Occam%27s_razor#Philosophy_of_mind 'Occam's razor'] or [http://en.wikipedia.org/wiki/Parsimony 'Parsimony'], which is not identical to the current principle. 'Occam's razor' assumes that the most simple explanation, imply fewer assumption, is probably the most valid solution. Anyway, simple design is probably the least surprising one.&lt;br /&gt;
&lt;br /&gt;
* [http://home.att.net/~p.caimi/schrodinger.html &amp;quot;What is Life?&amp;quot;] a book by physicist Erwin Schrödinger providing one of the first usage of this principal in philosophy to provide an explanation for 'free will', and 'human consciousness'. It is worth to say that the DNA concept is first introduced through this book, while it hadn't been discovered yet. [Other links].&lt;br /&gt;
&lt;br /&gt;
===Religion===&lt;br /&gt;
'The Principal of Least Astonishment' and 'Occam's razor' are surprisingly used in religion. [http://en.wikipedia.org/wiki/Theism Theisms] use 'The Principal of Least Astonishment' to prove the [http://en.wikipedia.org/wiki/Existence_of_God Existence of God], and the [http://en.wikipedia.org/wiki/Intelligent_design Intelligent design of Universe]. In the other hand, [http://en.wikipedia.org/wiki/Atheism Atheisms] use 'Occam's razor' to argue [http://en.wikipedia.org/wiki/Existence_of_God Existence of God], and as an [http://en.wikipedia.org/wiki/Argument_from_miracles Argument from miracles].&lt;br /&gt;
&lt;br /&gt;
* [http://interviews.slashdot.org/article.pl?sid=02/09/06/1343222 &amp;quot;Larry Wall On Perl, Religion, and...&amp;quot;] found to be the most related here. Larry Wall, the founder of Perl, uses the 'The Principal of Least Astonishment', which he introduced in Perl, to provide an explanation of faith. [Other links].&lt;br /&gt;
&lt;br /&gt;
====Quraan====&lt;br /&gt;
Quraan is considered by Muslims and some non-Muslims to strongly obey both 'Least Astonishment' and 'Occam's razor' principles as nature do, which suggests that it was created by the same designer. This would prove several controversies as [http://en.wikipedia.org/wiki/Creation-evolution_controversy creation/evolution controversy], [http://en.wikipedia.org/wiki/Existence_of_God existence of god], [http://en.wikipedia.org/wiki/Miracle miracles] ...etc, as it supports other profits stories and their miracles.&lt;br /&gt;
* [http://www.searchtruth.com/list.php &amp;quot;Search the Truth&amp;quot;] provides a search tool in different interpretations of Quraan in different languages.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
This wiki is intended to be a Guide for Principle of Least Astonishment. It provides many links to online sources that explains the topic simply with easy-to-understand examples, and/or gives an idea where this principle can be used in real-life. These links should be helpful for the ones who want to learn more on this topic or understand the topic in more detail.&lt;br /&gt;
&lt;br /&gt;
This principle can be used in many different disciplines for a universal useful solution for good designs. But it should be taken in consideration that although the principle goes parallel with common sense it may not necessarily go with the convention.&lt;br /&gt;
&lt;br /&gt;
[[Image:LA_Science.gif]]&lt;br /&gt;
&lt;br /&gt;
==External Links by Field==&lt;br /&gt;
&lt;br /&gt;
===User Interface===&lt;br /&gt;
* [http://www.faqs.org/docs/artu/ch11s01.html &amp;quot;Applying the Rule of Least Surprise&amp;quot;] from ''[[The Art of Unix Programming]]'' by [[Eric S. Raymond|E.S. Raymond]]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Principle_of_least_astonishment &amp;quot;Wikipedia&amp;quot;]&lt;br /&gt;
* [http://www.geocities.com/krishna_kunchith/misc/bscs.html &amp;quot;Confessions of a Coder&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
===Internet===&lt;br /&gt;
* [http://news.bbc.co.uk/2/hi/technology/3129184.stm &amp;quot;Site finding system faces suspension&amp;quot;]&lt;br /&gt;
* [http://www.ibm.com/developerworks/web/library/us-cranky10.html &amp;quot;Applying the Rule of Least Surprise in webpages&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
===Programming and Coding===&lt;br /&gt;
* [http://c2.com/cgi/wiki?PrincipleOfLeastAstonishment &amp;quot;Principle of Least Astonishment at Portland Pattern Repository&amp;quot;] &lt;br /&gt;
* [http://andywibbels.com/post/1263 &amp;quot;Andy Wibbel&amp;quot;] &lt;br /&gt;
* [http://www.perlmonks.org/?node_id=553487 &amp;quot;On Interfaces and APIs&amp;quot;]&lt;br /&gt;
* [http://www.atalasoft.com/cs/blogs/stevehawley/archive/2006/02/27/9590.aspx &amp;quot;Steve’s Tech Talk&amp;quot;] &lt;br /&gt;
* [http://en.wikipedia.org/wiki/Thread_safety &amp;quot;Thread safety&amp;quot;] &lt;br /&gt;
&lt;br /&gt;
===Programming Language===&lt;br /&gt;
* [http://www.cs.arizona.edu/projects/sumatra/hallofshame/  &amp;quot;Java Violate the Principle of Least Astonishment&amp;quot;]&lt;br /&gt;
* [http://jooto.com/blog/index.php/2006/06/06/principle-of-least-astonishment/ &amp;quot;Example from Ruby in Rails&amp;quot;] &lt;br /&gt;
&lt;br /&gt;
===Engineering and Design===&lt;br /&gt;
* [http://www.iea.cc/browse.php?contID=what_is_ergonomics &amp;quot;International Ergonomics Association&amp;quot;]&lt;br /&gt;
* [http://mitpress.mit.edu/catalog/item/default.asp?tid=10141&amp;amp;ttype=2 &amp;quot;Book: Activity-Centered Design&amp;quot;]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Ergonomics Ergonomics]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/User-centered_design 'User Centered Design'] &lt;br /&gt;
* [http://en.wikipedia.org/wiki/Contextual_design 'Contextual Design']&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Human-computer_interaction Human computer interaction]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/List_of_human-computer_interaction_topics &amp;quot;Wikipedia List of human-computer interaction topics&amp;quot;]&lt;br /&gt;
* [http://www.usabilitynet.org/tools/contextualinquiry.htm &amp;quot;contextual inquiry&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
===Science and Nature===&lt;br /&gt;
* [http://ecommons.library.cornell.edu/retrieve/300/Art_of_Discovery_Oliver2.pdf &amp;quot;The Incomplete Guide to the Art of Discovery&amp;quot;], *.PDF '' by [http://www.mssu.edu/seg-vm/bio_jack_e__oliver.html Jack E. Oliver]&lt;br /&gt;
* [http://www.answersingenesis.org/tj/v9/i2/astonishment.asp &amp;quot;When Principle of Least Astonishment go wrong&amp;quot;]&lt;br /&gt;
* [http://plato.stanford.edu/entries/einstein-philscience/#5 &amp;quot;Einstein's Philosophy of Science&amp;quot;]&lt;br /&gt;
* [http://www.csicop.org/si/2000-09/laws.html &amp;quot;The laws of Nature&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
===Philosophy===&lt;br /&gt;
* [http://home.att.net/~p.caimi/schrodinger.html &amp;quot;What is Life?&amp;quot;] &lt;br /&gt;
&lt;br /&gt;
===Religion===&lt;br /&gt;
* [http://interviews.slashdot.org/article.pl?sid=02/09/06/1343222 &amp;quot;Larry Wall On Perl, Religion, and...&amp;quot;]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Existence_of_God Existence of God]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Intelligent_design Intelligent design of Universe].&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Existence_of_God Existence of God]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Argument_from_miracles Argument from miracles]&lt;br /&gt;
* [http://www.creationontheweb.com/content/view/5096/ &amp;quot;Occam’s Razor and creation/evolution&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
===Others===&lt;br /&gt;
&lt;br /&gt;
==External Links by Term==&lt;br /&gt;
&lt;br /&gt;
===Principle of Least Astonishment===&lt;br /&gt;
* [http://www.ibm.com/developerworks/web/library/us-cranky10.html &amp;quot;Applying the Rule of Least Surprise in webpages&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
===Ergonomics===&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Ergonomics Ergonomics]&lt;br /&gt;
&lt;br /&gt;
===User Centered Design===&lt;br /&gt;
* [http://en.wikipedia.org/wiki/User-centered_design 'User Centered Design'] &lt;br /&gt;
&lt;br /&gt;
===Contextual Design===&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Contextual_design 'Contextual Design']&lt;br /&gt;
* [http://mitpress.mit.edu/catalog/item/default.asp?tid=10141&amp;amp;ttype=2 &amp;quot;Book: Activity-Centered Design&amp;quot;]&lt;br /&gt;
* [http://www.usabilitynet.org/tools/contextualinquiry.htm &amp;quot;contextual inquiry&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
===Law of Nature===&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Physical_law &amp;quot;Law of Nature&amp;quot;]&lt;br /&gt;
* [http://www.csicop.org/si/2000-09/laws.html &amp;quot;The laws of Nature&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
===Occam's razor or Parsimony===&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Occam%27s_razor#Philosophy_of_mind &amp;quot;Occam's razor&amp;quot;]  &lt;br /&gt;
* [http://en.wikipedia.org/wiki/Parsimony &amp;quot;Parsimony&amp;quot;],&lt;/div&gt;</summary>
		<author><name>Ndokuzo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_9_NT&amp;diff=6664</id>
		<title>CSC/ECE 517 Fall 2007/wiki2 9 NT</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_9_NT&amp;diff=6664"/>
		<updated>2007-10-22T22:29:50Z</updated>

		<summary type="html">&lt;p&gt;Ndokuzo: /* Examples of Violation of the Principle */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''Principle of Least Astonishment. Write a guide to the Web pages on the Principle of Least Astonishment. Which should the reader look at for easy-to-understand examples? Which give a feel for where the principle should be used? Is this principle present in fields other than programming? Is the term used consistently in other disciplines?''&lt;br /&gt;
&lt;br /&gt;
==What is 'Principle of Least Astonishment'?==&lt;br /&gt;
&lt;br /&gt;
'Principle of Least Astonishment' or 'Rule of minimum surprise' asserts that the system will cause the least surprise for the user by being as consistent and predictable as possible, and therefore usable. Which imply that in case of an ambiguity or a conflict in the system, the behavior of the system should be the one which will least surprise the user. In computer science, this principle has a wide range of application in topics such as user-interface design, programming language design, and programming. This principle is used in various disciplines as well as computer science such as engineering, science, and philosophy which are covered later in this wiki. After this brief information about the principle of least astonishment, now we are going to talk more about the sources found online about this topic and how well they explore the topic.&lt;br /&gt;
&lt;br /&gt;
==Guide to Web pages on Principle of Least Astonishment in Programming==&lt;br /&gt;
&lt;br /&gt;
When you type the keyword “Principle of Least Astonishment” to Google, it returns about 35,800 web pages. Surprisingly, none of the web pages listed are good enough to explain the topic thoroughly by itself.&lt;br /&gt;
&lt;br /&gt;
Here, we are going to explain the top searches returned by the Google query and comment on how effective they are in presenting this topic. This section is divided into two subtopics where we list the links with the easy-to-understand examples and links that give a feel where this principle should be used, even though they are divided into these subtopics as the assignment question states, there is no strict boundaries between them. So, a topic that gives a feel where this principle is used may also give easy-to-understand examples to explain it.&lt;br /&gt;
&lt;br /&gt;
===Where should the reader look for easy-to-understand examples?===&lt;br /&gt;
&lt;br /&gt;
[http://c2.com/cgi/wiki?PrincipleOfLeastAstonishment &amp;quot;Principle of Least Astonishment at Portland Pattern Repository&amp;quot;] provides a simple explanation to the topic and gives a couple of easy-to-understand examples; this is one of the best sites that one should start to learn on this topic.&lt;br /&gt;
&lt;br /&gt;
[http://andywibbels.com/post/1263 &amp;quot;Andy Wibbel&amp;quot;] gives the easy-to-understand definition of the principle that is combined from different sources. This is a good web page to start to learn about the topic, but it does not give any examples and it does not present where this principle is used.&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Principle_of_least_astonishment &amp;quot;Wikipedia&amp;quot;] defines the Principle of Least Astonishment briefly, and gives two simple easy-to-understand real-life examples, this website can help one to understand what the principle is but it is not a very good page to understand the topic and its application in great detail at all.&lt;br /&gt;
&lt;br /&gt;
[http://jooto.com/blog/index.php/2006/06/06/principle-of-least-astonishment/ &amp;quot;Ethical Software&amp;quot;] is a blog of an instructor, Alex Bunardzic, where he shares his in class experience when he was teaching Principle of Least Astonishment. The example that he gave in class is the Ruby on Rails code where he suggests using &amp;lt;%yield%&amp;gt; instead of &amp;lt;%content_for_layout%&amp;gt; to demonstrate this principle. This web page is not a good start to learn the topic, but it gives the idea of the principle and it demonstrates it with the Ruby on Rails code which is very related to what we have been doing in our class.&lt;br /&gt;
&lt;br /&gt;
====Examples of Violation of the Principle====&lt;br /&gt;
[http://news.bbc.co.uk/2/hi/technology/3129184.stm &amp;quot;Site finding system&amp;quot;] is a topic appeared in BBC News on September, 2003 which gives an real-life example of violation of this principle, and explains what it had caused.&lt;br /&gt;
&lt;br /&gt;
[http://www.cs.arizona.edu/projects/sumatra/hallofshame/ &amp;quot;Java Hall of Shame&amp;quot;] presents some of the points where programming language Java does not obey the Principle of Least Astonishment.&lt;br /&gt;
&lt;br /&gt;
[http://maba.wordpress.com/2006/09/10/thunderbird-just-stole-me-30-minutes/ &amp;quot;Thunderbird just stole me 30 minutes&amp;quot;] is a blog written by Martin Backschat, where he mentions how he was astonished by the user-interface of Mozilla Thunderbird while trying to change his password.&lt;br /&gt;
&lt;br /&gt;
===Where should the reader look for to get a feel where the principle should be used?===&lt;br /&gt;
&lt;br /&gt;
====Web Page Design====&lt;br /&gt;
[http://www.ibm.com/developerworks/web/library/us-cranky10.html &amp;quot;Peter Seebach&amp;quot;] explores the Principle of Least Astonishment on the web pages, talks about the common issues in web pages that astonish viewers. This web page gives many easy-to-understand examples of how this principle being violated on web pages.&lt;br /&gt;
&lt;br /&gt;
====API Design and Programming====&lt;br /&gt;
[http://www.atalasoft.com/cs/blogs/stevehawley/archive/2006/02/27/9590.aspx &amp;quot;Steve’s Tech Talk&amp;quot;] gives examples of the Principle of Least Astonishment from a computer scientist’s perspective. The examples provided in this site are all about how to write code and API that would surprise the client least.&lt;br /&gt;
&lt;br /&gt;
[http://benpryor.com/blog/index.php?/archives/19-API-Design-The-Principle-of-Least-Surprise.html, &amp;quot;API Design&amp;quot;] emphasized the importance of following the principle of least surprise in API design. Since an API will be used my many consumers, it should be intuitive, naming conventions should be clear and understandable, and API overall should meet the consumers expectations which is what this principle states.&lt;br /&gt;
&lt;br /&gt;
====User Interface Design====&lt;br /&gt;
[http://www.faqs.org/docs/artu/ch11s01.html &amp;quot;The Art of Unix Programming&amp;quot;] explains what the principle is and how it can be used when designing user-interfaces.&lt;br /&gt;
&lt;br /&gt;
[http://ergo.human.cornell.edu/ahtutorials/interface.html, &amp;quot;Ergonomic Guidelines for UI Design&amp;quot;] lists the basic rules of thumb for designing good user interfaces, which of course includes following the Principle of Least Astonishment to be intuitive and consistent for the users of the system. &lt;br /&gt;
&lt;br /&gt;
[http://www.ibm.com/developerworks/web/library/wa-cranky75/index.html, &amp;quot;Simple is the the Sophisticated&amp;quot;] is an article by Peter Seebach on how applications with simpler user interfaces tend to dominate the ones with complicated interfaces which all ties in with what Principle of Least Astonishment states.&lt;br /&gt;
&lt;br /&gt;
== Least Astonishment in Other Disciplines==&lt;br /&gt;
The 'Principle of Least Astonishment' can be considered as a cross disciplinary law in our modern life. From software to machine design to modern philosophy it is considered as a valid test criteria to well designed system. While the system changes (IT, product design, law, science, ...) the principle name will changes as well, as it appear in different terms ('User Centered Design', Contextual_design, Law of Nature, Occam's razor, ...). May be one of the clear examples to define a good design using the current principle is [http://en.wikipedia.org/wiki/Physical_law Law of Nature], which define a solution -or well designed system- to be:&lt;br /&gt;
* True!&lt;br /&gt;
* Universal. They appear to apply everywhere in the universe. &lt;br /&gt;
* Simple. They are typically easily  expressed.&lt;br /&gt;
* Absolute. Nothing in the universe appears to affect them. &lt;br /&gt;
* Stable. Unchanged since first discovered.&lt;br /&gt;
* Omnipotent. Everything in the universe apparently must comply with them (according to observations).&lt;br /&gt;
* Conservative.&lt;br /&gt;
* Symmetry in space and time.&lt;br /&gt;
* Reversible in time.&lt;br /&gt;
&lt;br /&gt;
Certainly these criteria would define a good code or a user interface as a counter to law of nature. Which surprisingly, or in our case least surprisingly, the 'Principle of Least Astonishment' prove itself by being least surprise solution as it is true, universal, simple, absolute, stable, omnipotent, symmetry and reversible. Following is general outline where the principle is applied.&lt;br /&gt;
&lt;br /&gt;
===Engineering and Design===&lt;br /&gt;
Design of equipment/product/system/laws/environment for human interaction is a whole science which is called [http://en.wikipedia.org/wiki/Ergonomics Ergonomics]. Although, this science expands to contain other aspects such as physical, cognitive, and organizational ergonomics. More specific concepts that relate to ours will be [http://en.wikipedia.org/wiki/User-centered_design 'User Centered Design'] or [http://en.wikipedia.org/wiki/Contextual_design 'Contextual Design']. 'Contextual Design' support not only the principle of least surprise but also investigate into the context and motivation of user behavior to be adopted by the design. Certain enough this principle is applied to every aspect in our life; cars, buildings, traffic, education, ...etc.&lt;br /&gt;
&lt;br /&gt;
* [http://en.wikipedia.org/wiki/List_of_human-computer_interaction_topics &amp;quot;Wikipedia List of human-computer interaction topics&amp;quot;] provides a comprehensive list of topics related to the application of the human-computer interaction. [Other links].&lt;br /&gt;
&lt;br /&gt;
===Science and Nature===&lt;br /&gt;
The same principle is extended to science as well, where [http://en.wikipedia.org/wiki/Physical_law Law of Nature] is believed to carry the least surprise. As Einstein states, ''&amp;quot;To me, the most incomprehensible thing about the universe is that it is comprehensible&amp;quot; [http://www.csicop.org/si/2000-09/laws.html 2].'' A prove would be that many of the law of natural and major discoveries, as relativity, were found before it was directly observed, analytically or experimentally observed. Which illustrate that the Natural and the universe is a good design as well.&lt;br /&gt;
&lt;br /&gt;
* [http://ecommons.library.cornell.edu/retrieve/300/Art_of_Discovery_Oliver2.pdf &amp;quot;The Incomplete Guide to the Art of Discovery . PDF&amp;quot;], Page ''51,52'', '' by [http://www.mssu.edu/seg-vm/bio_jack_e__oliver.html Jack E. Oliver] introduce the 'Principal of Least Astonishment', or 'intuition' as a tool to be used to discover the nature and its laws. [Other links].&lt;br /&gt;
&lt;br /&gt;
===Philosophy===&lt;br /&gt;
Another field where the principle apply is philosophy, where it is used to distinguish between several philosophical interpretation to the same controversy. While in philosophy it is more referred as [http://en.wikipedia.org/wiki/Occam%27s_razor#Philosophy_of_mind 'Occam's razor'] or [http://en.wikipedia.org/wiki/Parsimony 'Parsimony'], which is not identical to the current principle. 'Occam's razor' assumes that the most simple explanation, imply fewer assumption, is probably the most valid solution. Anyway, simple design is probably the least surprising one.&lt;br /&gt;
&lt;br /&gt;
* [http://home.att.net/~p.caimi/schrodinger.html &amp;quot;What is Life?&amp;quot;] a book by physicist Erwin Schrödinger providing one of the first usage of this principal in philosophy to provide an explanation for 'free will', and 'human consciousness'. It is worth to say that the DNA concept is first introduced through this book, while it hadn't been discovered yet. [Other links].&lt;br /&gt;
&lt;br /&gt;
===Religion===&lt;br /&gt;
'The Principal of Least Astonishment' and 'Occam's razor' are surprisingly used in religion. [http://en.wikipedia.org/wiki/Theism Theisms] use 'The Principal of Least Astonishment' to prove the [http://en.wikipedia.org/wiki/Existence_of_God Existence of God], and the [http://en.wikipedia.org/wiki/Intelligent_design Intelligent design of Universe]. In the other hand, [http://en.wikipedia.org/wiki/Atheism Atheisms] use 'Occam's razor' to argue [http://en.wikipedia.org/wiki/Existence_of_God Existence of God], and as an [http://en.wikipedia.org/wiki/Argument_from_miracles Argument from miracles].&lt;br /&gt;
&lt;br /&gt;
* [http://interviews.slashdot.org/article.pl?sid=02/09/06/1343222 &amp;quot;Larry Wall On Perl, Religion, and...&amp;quot;] found to be the most related here. Larry Wall, the founder of Perl, uses the 'The Principal of Least Astonishment', which he introduced in Perl, to provide an explanation of faith. [Other links].&lt;br /&gt;
&lt;br /&gt;
====Quraan====&lt;br /&gt;
Quraan is considered by Muslims and some non-Muslims to strongly obey both 'Least Astonishment' and 'Occam's razor' principles as nature do, which suggests that it was created by the same designer. This would prove several controversies as [http://en.wikipedia.org/wiki/Creation-evolution_controversy creation/evolution controversy], [http://en.wikipedia.org/wiki/Existence_of_God existence of god], [http://en.wikipedia.org/wiki/Miracle miracles] ...etc, as it supports other profits stories and their miracles.&lt;br /&gt;
* [http://www.searchtruth.com/list.php &amp;quot;Search the Truth&amp;quot;] provides a search tool in different interpretations of Quraan in different languages.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
This wiki is intended to be a Guide for Principle of Least Astonishment. It provides many links to online sources that explains the topic simply with easy-to-understand examples, and/or gives an idea where this principle can be used in real-life. These links should be helpful for the ones who want to learn more on this topic or understand the topic in more detail.&lt;br /&gt;
&lt;br /&gt;
This principle can be used in many different disciplines for a universal useful solution for good designs. But it should be taken in consideration that although the principle goes parallel with common sense it may not necessarily go with the convention.&lt;br /&gt;
&lt;br /&gt;
[[Image:LA_Science.gif]]&lt;br /&gt;
&lt;br /&gt;
==External Links by Field==&lt;br /&gt;
&lt;br /&gt;
===User Interface===&lt;br /&gt;
* [http://www.faqs.org/docs/artu/ch11s01.html &amp;quot;Applying the Rule of Least Surprise&amp;quot;] from ''[[The Art of Unix Programming]]'' by [[Eric S. Raymond|E.S. Raymond]]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Principle_of_least_astonishment &amp;quot;Wikipedia&amp;quot;]&lt;br /&gt;
* [http://www.geocities.com/krishna_kunchith/misc/bscs.html &amp;quot;Confessions of a Coder&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
===Internet===&lt;br /&gt;
* [http://news.bbc.co.uk/2/hi/technology/3129184.stm &amp;quot;Site finding system faces suspension&amp;quot;]&lt;br /&gt;
* [http://www.ibm.com/developerworks/web/library/us-cranky10.html &amp;quot;Applying the Rule of Least Surprise in webpages&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
===Programming and Coding===&lt;br /&gt;
* [http://c2.com/cgi/wiki?PrincipleOfLeastAstonishment &amp;quot;Principle of Least Astonishment at Portland Pattern Repository&amp;quot;] &lt;br /&gt;
* [http://andywibbels.com/post/1263 &amp;quot;Andy Wibbel&amp;quot;] &lt;br /&gt;
* [http://www.perlmonks.org/?node_id=553487 &amp;quot;On Interfaces and APIs&amp;quot;]&lt;br /&gt;
* [http://www.atalasoft.com/cs/blogs/stevehawley/archive/2006/02/27/9590.aspx &amp;quot;Steve’s Tech Talk&amp;quot;] &lt;br /&gt;
* [http://en.wikipedia.org/wiki/Thread_safety &amp;quot;Thread safety&amp;quot;] &lt;br /&gt;
&lt;br /&gt;
===Programming Language===&lt;br /&gt;
* [http://www.cs.arizona.edu/projects/sumatra/hallofshame/  &amp;quot;Java Violate the Principle of Least Astonishment&amp;quot;]&lt;br /&gt;
* [http://jooto.com/blog/index.php/2006/06/06/principle-of-least-astonishment/ &amp;quot;Example from Ruby in Rails&amp;quot;] &lt;br /&gt;
&lt;br /&gt;
===Engineering and Design===&lt;br /&gt;
* [http://www.iea.cc/browse.php?contID=what_is_ergonomics &amp;quot;International Ergonomics Association&amp;quot;]&lt;br /&gt;
* [http://mitpress.mit.edu/catalog/item/default.asp?tid=10141&amp;amp;ttype=2 &amp;quot;Book: Activity-Centered Design&amp;quot;]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Ergonomics Ergonomics]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/User-centered_design 'User Centered Design'] &lt;br /&gt;
* [http://en.wikipedia.org/wiki/Contextual_design 'Contextual Design']&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Human-computer_interaction Human computer interaction]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/List_of_human-computer_interaction_topics &amp;quot;Wikipedia List of human-computer interaction topics&amp;quot;]&lt;br /&gt;
* [http://www.usabilitynet.org/tools/contextualinquiry.htm &amp;quot;contextual inquiry&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
===Science and Nature===&lt;br /&gt;
* [http://ecommons.library.cornell.edu/retrieve/300/Art_of_Discovery_Oliver2.pdf &amp;quot;The Incomplete Guide to the Art of Discovery&amp;quot;], *.PDF '' by [http://www.mssu.edu/seg-vm/bio_jack_e__oliver.html Jack E. Oliver]&lt;br /&gt;
* [http://www.answersingenesis.org/tj/v9/i2/astonishment.asp &amp;quot;When Principle of Least Astonishment go wrong&amp;quot;]&lt;br /&gt;
* [http://plato.stanford.edu/entries/einstein-philscience/#5 &amp;quot;Einstein's Philosophy of Science&amp;quot;]&lt;br /&gt;
* [http://www.csicop.org/si/2000-09/laws.html &amp;quot;The laws of Nature&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
===Philosophy===&lt;br /&gt;
* [http://home.att.net/~p.caimi/schrodinger.html &amp;quot;What is Life?&amp;quot;] &lt;br /&gt;
&lt;br /&gt;
===Religion===&lt;br /&gt;
* [http://interviews.slashdot.org/article.pl?sid=02/09/06/1343222 &amp;quot;Larry Wall On Perl, Religion, and...&amp;quot;]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Existence_of_God Existence of God]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Intelligent_design Intelligent design of Universe].&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Existence_of_God Existence of God]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Argument_from_miracles Argument from miracles]&lt;br /&gt;
* [http://www.creationontheweb.com/content/view/5096/ &amp;quot;Occam’s Razor and creation/evolution&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
===Others===&lt;br /&gt;
&lt;br /&gt;
==External Links by Term==&lt;br /&gt;
&lt;br /&gt;
===Principle of Least Astonishment===&lt;br /&gt;
* [http://www.ibm.com/developerworks/web/library/us-cranky10.html &amp;quot;Applying the Rule of Least Surprise in webpages&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
===Ergonomics===&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Ergonomics Ergonomics]&lt;br /&gt;
&lt;br /&gt;
===User Centered Design===&lt;br /&gt;
* [http://en.wikipedia.org/wiki/User-centered_design 'User Centered Design'] &lt;br /&gt;
&lt;br /&gt;
===Contextual Design===&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Contextual_design 'Contextual Design']&lt;br /&gt;
* [http://mitpress.mit.edu/catalog/item/default.asp?tid=10141&amp;amp;ttype=2 &amp;quot;Book: Activity-Centered Design&amp;quot;]&lt;br /&gt;
* [http://www.usabilitynet.org/tools/contextualinquiry.htm &amp;quot;contextual inquiry&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
===Law of Nature===&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Physical_law &amp;quot;Law of Nature&amp;quot;]&lt;br /&gt;
* [http://www.csicop.org/si/2000-09/laws.html &amp;quot;The laws of Nature&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
===Occam's razor or Parsimony===&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Occam%27s_razor#Philosophy_of_mind &amp;quot;Occam's razor&amp;quot;]  &lt;br /&gt;
* [http://en.wikipedia.org/wiki/Parsimony &amp;quot;Parsimony&amp;quot;], &lt;br /&gt;
&lt;br /&gt;
===Others===&lt;/div&gt;</summary>
		<author><name>Ndokuzo</name></author>
	</entry>
</feed>