<?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=Schinni</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=Schinni"/>
	<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Special:Contributions/Schinni"/>
	<updated>2026-05-26T00:24:12Z</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=9897</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=9897"/>
		<updated>2007-11-27T05:11:00Z</updated>

		<summary type="html">&lt;p&gt;Schinni: /* 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 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;
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>Schinni</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=9893</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=9893"/>
		<updated>2007-11-27T04:55:29Z</updated>

		<summary type="html">&lt;p&gt;Schinni: /* 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 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;
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 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>Schinni</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=9890</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=9890"/>
		<updated>2007-11-27T04:49:39Z</updated>

		<summary type="html">&lt;p&gt;Schinni: /* 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 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 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;
''&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 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>Schinni</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=9889</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=9889"/>
		<updated>2007-11-27T04:49:25Z</updated>

		<summary type="html">&lt;p&gt;Schinni: /* 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 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;
''&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>Schinni</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=9887</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=9887"/>
		<updated>2007-11-27T04:48:30Z</updated>

		<summary type="html">&lt;p&gt;Schinni: /* 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 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>Schinni</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=9885</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=9885"/>
		<updated>2007-11-27T04:45:52Z</updated>

		<summary type="html">&lt;p&gt;Schinni: /* 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;
# 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>Schinni</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=9884</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=9884"/>
		<updated>2007-11-27T04:45:07Z</updated>

		<summary type="html">&lt;p&gt;Schinni: /* 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 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>Schinni</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=9883</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=9883"/>
		<updated>2007-11-27T04:44:33Z</updated>

		<summary type="html">&lt;p&gt;Schinni: /* 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 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>Schinni</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=9882</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=9882"/>
		<updated>2007-11-27T04:43:50Z</updated>

		<summary type="html">&lt;p&gt;Schinni: /* 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, 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 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>Schinni</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=9881</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=9881"/>
		<updated>2007-11-27T04:41:55Z</updated>

		<summary type="html">&lt;p&gt;Schinni: &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;
=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 decide on which  class to instantiate(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 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>Schinni</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=9859</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=9859"/>
		<updated>2007-11-26T20:49:42Z</updated>

		<summary type="html">&lt;p&gt;Schinni: /* 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 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 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>Schinni</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=9316</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=9316"/>
		<updated>2007-11-19T16:35:38Z</updated>

		<summary type="html">&lt;p&gt;Schinni: /* 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>Schinni</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=9315</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=9315"/>
		<updated>2007-11-19T16:34:34Z</updated>

		<summary type="html">&lt;p&gt;Schinni: /* 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;i&amp;gt;Employee Time Keeping System &amp;lt;/i&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>Schinni</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=9312</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=9312"/>
		<updated>2007-11-19T16:25:26Z</updated>

		<summary type="html">&lt;p&gt;Schinni: /* 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;
&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;i&amp;gt;Employee Time Keeping System &amp;lt;/i&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>Schinni</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=9303</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=9303"/>
		<updated>2007-11-19T16:01:40Z</updated>

		<summary type="html">&lt;p&gt;Schinni: /* 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;
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;
&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;i&amp;gt;Employee Time Keeping System &amp;lt;/i&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>Schinni</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=9301</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=9301"/>
		<updated>2007-11-19T16:00:21Z</updated>

		<summary type="html">&lt;p&gt;Schinni: /* 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;
&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;i&amp;gt;Employee Time Keeping System &amp;lt;/i&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;/div&gt;</summary>
		<author><name>Schinni</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Wiki3.JPG&amp;diff=9292</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=9292"/>
		<updated>2007-11-19T15:39:57Z</updated>

		<summary type="html">&lt;p&gt;Schinni: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Schinni</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Wiki_3.JPG&amp;diff=9291</id>
		<title>File:Wiki 3.JPG</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Wiki_3.JPG&amp;diff=9291"/>
		<updated>2007-11-19T15:38:34Z</updated>

		<summary type="html">&lt;p&gt;Schinni: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Schinni</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki3_5_ns&amp;diff=9285</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=9285"/>
		<updated>2007-11-19T15:34:30Z</updated>

		<summary type="html">&lt;p&gt;Schinni: &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;
Synopsis for Creator Pattern ( 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;
Synopsis for Factory Method ( 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;
Advantages of Creator Pattern&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;
Advantages of Factory Pattern&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;
Example for Creator Pattern:&lt;br /&gt;
[[Image:Example.jpg]]&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>Schinni</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=Http:/pg.ece.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2007/wiki2_3_77&amp;diff=8008</id>
		<title>Http:/pg.ece.ncsu.edu/mediawiki/index.php/CSC/ECE 517 Fall 2007/wiki2 3 77</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Http:/pg.ece.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2007/wiki2_3_77&amp;diff=8008"/>
		<updated>2007-10-29T16:48:53Z</updated>

		<summary type="html">&lt;p&gt;Schinni: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Model/View/Controller Websites Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Topic ===&lt;br /&gt;
----&lt;br /&gt;
Model/view/controller. There are literally hundreds of pages describing MVC on the Web. If someone wants to learn about it, what should (s)he do? Look at the first few hits in Google? I expect we can do better than that. Write a review of the MVC sites on the Web. Which are best for learning about the concept? Which have the most instructive examples? Which are best for explaining how to use the pattern in Ruby and Java? If you choose this topic, you should be sure to peruse at least several dozen sites.&lt;br /&gt;
&lt;br /&gt;
=== Introduction to Model/View/Controller (MVC)===&lt;br /&gt;
----&lt;br /&gt;
This is an architectural pattern adopted in software engineering. Generally, complex computer applications deal with large amount of data in conjunction with the functionality accessing this data. This generally becomes difficult to handle. Hence the programmer prefers to separate the functionality and data (model) from the user interface (view). This technique is very useful since any changes made to user interface may not affect the functionality of the program and vice versa.  The data may be reorganized without making any changes in user interface. This is accomplished by decoupling data access from data presentation and user interface by the introduction of an intermediate component named controller.&lt;br /&gt;
&lt;br /&gt;
[[Image:Mvc1.JPG]]&lt;br /&gt;
&lt;br /&gt;
The application is decoupled into three layers that would allow flexibility and reuse: &lt;br /&gt;
&lt;br /&gt;
'''Model:''' This is the domain-specific representation of information where the application operates. It knows about all the operations that can be used to transform this information. But it has no idea how these operations are invoked.&lt;br /&gt;
&lt;br /&gt;
'''Controller:''' This layer responds to the user (user inputs) which may invoke changes on the model. More specifically as mentioned by “Martin Fowler” in his book “Patterns of Enterprise Application Architecture” in a lucid way “Controller takes user input, manipulates the model and causes the view to update properly”&lt;br /&gt;
&lt;br /&gt;
'''View:''' This layer provides the user interface element. This is the user-visible view of the model where the information is presented in a domain-specific and user-friendly way.&lt;br /&gt;
&lt;br /&gt;
The MVC architectural pattern is very useful for the purpose of web development applications. One of the main purpose it serves is the separation of concerns. Hence, code is cleaner and easier to understand. The other advantage is reusability. The model can be enhanced in order to improve the functionality of the code with very minimal changes to the controller or view. &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Categories of Websites ===&lt;br /&gt;
&lt;br /&gt;
There are many sites available online about MVC which are very useful to a newbie. Certain websites provide proper pictorial representation and conceptual view of architectural pattern while some provide insight into the interaction between the different layers (i.e. model, controller and view). The websites can be categorized into two broad divisions, &amp;quot;Basic Concept&amp;quot;, &amp;quot;Implementation-Specific&amp;quot; and &amp;quot;Examples :&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;MVC Explained with an Example&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Any concept explained through an example is better understood than just theoretical description.Thus, while categorizing websites higher priority is given to those which explain MVC with an example.&lt;br /&gt;
&lt;br /&gt;
;*http://cristobal.baray.com/indiana/projects/mvc.html&lt;br /&gt;
:This site provides the perfect place for a novice of MVC to start. This was written in a conversational style and easy to understand. As we proceed with the blue arrows provided on the right bottom corner or the right-top corner, the  author slowly develops MVC concept and explains it through a very simple instructive example of &amp;quot;Heart-Beat&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
:Example: The heart-beat example consists of the interface as shown below .&lt;br /&gt;
[[Image:Heartbeat.JPG]]&lt;br /&gt;
&lt;br /&gt;
This particular example creates 2 separate Java windows for view and controller.After the details how this example is implemented, the author again explains the concept of MVC with respect to the example.&lt;br /&gt;
&lt;br /&gt;
[[Image:NOW.JPG]]&lt;br /&gt;
&lt;br /&gt;
;*http://www.adobe.com/devnet/flash/articles/mv_controller.html&lt;br /&gt;
:Starting off with a one line description of MVC and with a &amp;quot;Toggle button&amp;quot; example, this chapter &amp;quot;The Model-View-Controller Design Pattern&amp;quot; from the book &amp;quot;Essential ActionScript 2.0&amp;quot; provides a very instructive explaination of MVC design pattern.The responsibilities of the MVC are elaborated with a running example of a Clock. &lt;br /&gt;
 &lt;br /&gt;
[[Image:Adobe_MVC.gif]]&lt;br /&gt;
&lt;br /&gt;
:This site gives 2 examples, &amp;quot;Toggle&amp;quot; and &amp;quot;Clock&amp;quot;, second one being the running example across the excerpt.This example explains the responsibilities of each model,view. It also justifies the usage of MVC with the example which gives us a better insight into the MVC architecture as a whole.&lt;br /&gt;
&lt;br /&gt;
;*http://ist.berkeley.edu/as/ag/pub/pdf/mvc-seminar.pdf&lt;br /&gt;
:This provides a brief info on the history of design patterns and in particular MVC. The seminar proceeds to provide a brief introduction to MVC and then proceeds to its example of &amp;quot;Student_Information&amp;quot;.It then uses this example to explain in detail the concept of each of the Model, View and Controller. It also provides information about various technologies available for implementing MVC.&lt;br /&gt;
:This pdf provides a application Student_Information as an example of MVC. In this application, the view displays the info, the model stores the relevant information and the controller provides the relevant API's needed for receiving user_input and updating the model appropriately.&lt;br /&gt;
 &lt;br /&gt;
[[Image:Mvc_2.JPG|thumb|150px]]&lt;br /&gt;
;*http://www.enode.com/x/markup/tutorial/mvc.html&lt;br /&gt;
:This page, which is part of a tutorial, provides very basic definition of MVC and is accompanied by an instructive example  of a &amp;quot;Spinner&amp;quot;. &lt;br /&gt;
:This example explains how the data in the model is displayed by the view and how an &amp;quot;event action&amp;quot; is recognized by the controller which modifies model as required. It also briefly introduces the concept of multiple controllers modifying the same model.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;MVC dealt theoretically&amp;quot;====&lt;br /&gt;
&lt;br /&gt;
;*http://www.phpwact.org/pattern/model_view_controller&lt;br /&gt;
:This site provides a detailed overview of MVC pattern. It explains the different layers and relationship among them. It discusses the importance of structuring views, controllers and models.  It contains information about the benefits and drawbacks of MVC along with the irrelevant situations where MVC will not be helpful.&lt;br /&gt;
&lt;br /&gt;
;*http://msdn2.microsoft.com/en-us/library/ms978748.aspx&lt;br /&gt;
:This is the Microsoft's MSDN site, which poses the problem of &amp;quot;How do you modularize the user interface functionality of a Web application so that you can easily modify the individual parts?&amp;quot; and also provides the forces that act on the system given the situation. Having given a good description of the problem , the websites proceeds to give a concise description about how the MVC design pattern solves the problem posed. It also provides the user insight into variations of MVC that are available.&lt;br /&gt;
&lt;br /&gt;
;*http://www.jdl.co.uk/briefings%5CMVC.pdf&lt;br /&gt;
:This is a 6-page document on MVC. Though it does not provide a insight into the MVC as a design pattern, it does identify various aspects of it, which needs to be understood for understanding the pattern.&lt;br /&gt;
&lt;br /&gt;
;*[http://en.wikipedia.org/wiki/Model-view-controller Wikipedia entry on MVC]&lt;br /&gt;
:The most referred to link while dealing with any topic. After giving brief history of MVC, it provides lucid introduction to the MVC design pattern followed by brief explanation language-specific implementation of MVC in Java, Ruby, Perl, .NET.&lt;br /&gt;
&lt;br /&gt;
;*http://livedocs.adobe.com/flash/9.0/UsingFlash/help.html?content=WSd60f23110762d6b883b18f10cb1fe1af6-7b36.html&lt;br /&gt;
:It defines the MVC design pattern and explains the concept and how it helps simplifies the developer’s work and also improves the maintainability of the code&lt;br /&gt;
&lt;br /&gt;
;*http://articles.techrepublic.com.com/5100-22-1049862.html&lt;br /&gt;
:Articles in Tech Republic that explain in a lucid way the MVC pattern, where it is best used and couple of its disadvantages.&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;Implementation Specific&amp;quot; Websites ====&lt;br /&gt;
&lt;br /&gt;
The following sites illustrate the implementation of MVC in different programming languages like SmallTalk (MVC was originally created for this), Java, Ruby, ASP .NET etc.&lt;br /&gt;
&lt;br /&gt;
=====SmallTalk=====&lt;br /&gt;
;*[http://st-www.cs.uiuc.edu/users/smarch/st-docs/mvc.html MVC architecture First Proposal] &lt;br /&gt;
:This provides the paper by Steve Burbeck, who initially proposed the concept of MVC for Small Talk programming. It provides overview of how to use to MVC for application programming in Smalltalk. It discusses the communication within and between the 3 layers of MVC.  It contains information about existing view hierarchy. Some of the existing views are browsers inspectors and debuggers.&lt;br /&gt;
&lt;br /&gt;
=====Java=====&lt;br /&gt;
;*http://www.csis.pace.edu/~bergin/mvc/mvcgui.html&lt;br /&gt;
:This site gives a simple example of Temperature Control system implemented in java using the Observer and Observable ( these classes have been defined in java in order to implement the MVC architecture in Java)  .This site explains in a very instructional way of how to implement MVC in java.&lt;br /&gt;
&lt;br /&gt;
;*http://www.developer.com/java/ent/article.php/3336761&lt;br /&gt;
:This site highlights the importance of MVC patterns and its application in many GUI-based applications, client interfaces, and widget toolkits for manipulating and storing data for the end users. Java’s Swing toolkit is a perfect example. The site explains the implementation of MVC in swing. It provides a listing of all components in the model interface. There is a sample code that would help a user to see the functionality of all examples.&lt;br /&gt;
&lt;br /&gt;
;*http://java.sun.com/blueprints/patterns/MVC-detailed.html&lt;br /&gt;
:This SUN site poses a simple situation where the MVC design pattern can be applied and used to solve the problem using JSP’s to render the views, Servlets as controllers, EJB as models&lt;br /&gt;
&lt;br /&gt;
;*http://www.ifi.unizh.ch/richter/Classes/oose2/03_mvc/02_mvc_java/02_mvc_java.html#4%20Models%20as%20Proxies &lt;br /&gt;
:This site is an extension to earlier site and provides detailed explanation about the usage of MVC architecture in Java’s Swing. This site is for the advanced users who need to apply MVC in visual programming.&lt;br /&gt;
&lt;br /&gt;
;*[http://images.google.com/imgres?imgurl=http://publib.boulder.ibm.com/infocenter/wsadhelp/v5r1m2/topic/com.ibm.etools.struts.doc/images/cstrdoc018.gif&amp;amp;imgrefurl=http://publib.boulder.ibm.com/infocenter/wsadhelp/v5r1m2/topic/com.ibm.etools.struts.doc/topics/cstrdoc001.html&amp;amp;h=322&amp;amp;w=628&amp;amp;sz=30&amp;amp;hl=en&amp;amp;start=2&amp;amp;um=1&amp;amp;tbnid=tVyYlnDiTkYQbM:&amp;amp;tbnh=70&amp;amp;tbnw=137&amp;amp;prev=/images%3Fq%3DMVC%2B%2Bdesign%2Bpattern%26svnum%3D10%26um%3D1%26hl%3Den%26sa%3DX Google Image explaining MVC in Java]&lt;br /&gt;
:This provides pictorial representation of applications of MVC in Java. It contains images along with explanation for the MVC pattern used in Java explaining MVC and how is it integrated with JSP and struts in Java. &lt;br /&gt;
=====Ruby-On-Rails=====&lt;br /&gt;
;*[http://www.regdeveloper.co.uk/2006/07/17/ruby_rails_part2/ MVC example in Ruby on Rails]&lt;br /&gt;
:This is a very detailed instructional tutorial aimed at developing a MVC CRUD (Create, Read, Update, Delete) application in Ruby on Rails&lt;br /&gt;
&lt;br /&gt;
;*[http://blogs.ittoolbox.com/emergingtech/edge/archives/mvc-and-rails-12457 Blog on MVC in Ruby on Rails]&lt;br /&gt;
:This is a blog entry on MVC through the viewpoint of a Ruby on Rails developer defining MVC and giving minor details as to how MVC is implemented in Ruby on Rails.&lt;br /&gt;
&lt;br /&gt;
;*[http://wiki.rubyonrails.org/rails/pages/UnderstandingRailsMVC MVC in Rails explained in rubyonrails.org]&lt;br /&gt;
:This is an article on the Ruby on Rails official website defining the MVC usage in Rails along with links to articles within the same website for better understanding of MVC.&lt;br /&gt;
&lt;br /&gt;
;*[http://s3.amazonaws.com/sitepoint-books/ror.pdf Rails book dealing MVC architecture in Rails]&lt;br /&gt;
:This is a free download of pdf format of a book “Build your own Ruby on rails applications” by Patrick Lenz. This free pdf download expires by initial days of December//'2007//. This book provides a very wonderful development from the basics of Ruby to Ruby on Rails(RoR) and the MVC architecture explained and shown how it is embedded in RoR. This comes in conjunction with easy to learn illustrations&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
The sites mentioned above are very useful for several programmers such Java, Ruby, Smalltalk programmers. It provides a background for new users who would like to implement design patterns hand in hand with software engineering techniques. &lt;br /&gt;
Most of the sites explain the MVC as a part of implementation of MVC in their specific software or application. Only a few sites actually deal with the concept illustrating it in a lucid way with simple instructional examples.&lt;/div&gt;</summary>
		<author><name>Schinni</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=Http:/pg.ece.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2007/wiki2_3_77&amp;diff=7966</id>
		<title>Http:/pg.ece.ncsu.edu/mediawiki/index.php/CSC/ECE 517 Fall 2007/wiki2 3 77</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Http:/pg.ece.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2007/wiki2_3_77&amp;diff=7966"/>
		<updated>2007-10-28T23:43:07Z</updated>

		<summary type="html">&lt;p&gt;Schinni: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Model/View/Controller Websites Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Topic ===&lt;br /&gt;
----&lt;br /&gt;
Model/view/controller. There are literally hundreds of pages describing MVC on the Web. If someone wants to learn about it, what should (s)he do? Look at the first few hits in Google? I expect we can do better than that. Write a review of the MVC sites on the Web. Which are best for learning about the concept? Which have the most instructive examples? Which are best for explaining how to use the pattern in Ruby and Java? If you choose this topic, you should be sure to peruse at least several dozen sites.&lt;br /&gt;
&lt;br /&gt;
=== Introduction to Model/View/Controller (MVC)===&lt;br /&gt;
----&lt;br /&gt;
This is an architectural pattern adopted in software engineering. Generally, complex computer applications deal with large amount of data in conjunction with the functionality accessing this data. This generally becomes difficult to handle. Hence the programmer prefers to separate the functionality and data (model) from the user interface (view). This technique is very useful since any changes made to user interface may not affect the functionality of the program and vice versa.  The data may be reorganized without making any changes in user interface. This is accomplished by decoupling data access from data presentation and user interface by the introduction of an intermediate component named controller.&lt;br /&gt;
&lt;br /&gt;
[[Image:Mvc1.JPG]]&lt;br /&gt;
The application is decoupled into three layers that would allow flexibility and reuse: &lt;br /&gt;
&lt;br /&gt;
'''Model:''' This is the domain-specific representation of information where the application operates. It knows about all the operations that can be used to transform this information. But it has no idea how these operations are invoked.&lt;br /&gt;
&lt;br /&gt;
'''Controller:''' This layer responds to the user (user inputs) which may invoke changes on the model. More specifically as mentioned by “Martin Fowler” in his book “Patterns of Enterprise Application Architecture” in a lucid way “Controller takes user input, manipulates the model and causes the view to update properly”&lt;br /&gt;
&lt;br /&gt;
'''View:''' This layer provides the user interface element. This is the user-visible view of the model where the information is presented in a domain-specific and user-friendly way.&lt;br /&gt;
&lt;br /&gt;
The MVC architectural pattern is very useful for the purpose of web development applications. One of the main purpose it serves is the separation of concerns. Hence, code is cleaner and easier to understand. The other advantage is reusability. The model can be enhanced in order to improve the functionality of the code with very minimal changes to the controller or view. &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Categories of Websites ===&lt;br /&gt;
&lt;br /&gt;
There are many sites available online about MVC which are very useful to a newbie. Certain websites provide proper pictorial representation and conceptual view of architectural pattern while some provide insight into the interaction between the different layers (i.e. model, controller and view). The websites can be categorized into two broad divisions, &amp;quot;Basic Concept&amp;quot;, &amp;quot;Implementation-Specific&amp;quot; and &amp;quot;Examples :&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;MVC Explained with an Example&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Any concept explained through an example is better understood than just theoretical description.Thus, while categorizing websites higher priority is given to those which explain MVC with an example.&lt;br /&gt;
&lt;br /&gt;
;*http://cristobal.baray.com/indiana/projects/mvc.html&lt;br /&gt;
:This site provides the perfect place for a novice of MVC to start. This was written in a conversational style and easy to understand. As we proceed with the blue arrows provided on the right bottom corner or the right-top corner, the  author slowly develops MVC concept and explains it through a very simple instructive example of &amp;quot;Heart-Beat&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
:Example: The heart-beat example consists of the interface as shown below .&lt;br /&gt;
[[Image:Heartbeat.JPG]]&lt;br /&gt;
&lt;br /&gt;
This particular example creates 2 separate Java windows for view and controller.After the details how this example is implemented, the author again explains the concept of MVC with respect to the example.&lt;br /&gt;
&lt;br /&gt;
[[Image:NOW.JPG]]&lt;br /&gt;
&lt;br /&gt;
;*http://www.adobe.com/devnet/flash/articles/mv_controller.html&lt;br /&gt;
:Starting off with a one line description of MVC and with a &amp;quot;Toggle button&amp;quot; example, this chapter &amp;quot;The Model-View-Controller Design Pattern&amp;quot; from the book &amp;quot;Essential ActionScript 2.0&amp;quot; provides a very instructive explaination of MVC design pattern.The responsibilities of the MVC are elaborated with a running example of a Clock. &lt;br /&gt;
 &lt;br /&gt;
[[Image:Adobe_MVC.gif]]&lt;br /&gt;
&lt;br /&gt;
:This site gives 2 examples, &amp;quot;Toggle&amp;quot; and &amp;quot;Clock&amp;quot;, second one being the running example across the excerpt.This example explains the responsibilities of each model,view. It also justifies the usage of MVC with the example which gives us a better insight into the MVC architecture as a whole.&lt;br /&gt;
&lt;br /&gt;
;*http://ist.berkeley.edu/as/ag/pub/pdf/mvc-seminar.pdf&lt;br /&gt;
:This provides a brief info on the history of design patterns and in particular MVC. The seminar proceeds to provide a brief introduction to MVC and then proceeds to its example of &amp;quot;Student_Information&amp;quot;.It then uses this example to explain in detail the concept of each of the Model, View and Controller. It also provides information about various technologies available for implementing MVC.&lt;br /&gt;
:This pdf provides a application Student_Information as an example of MVC. In this application, the view displays the info, the model stores the relevant information and the controller provides the relevant API's needed for receiving user_input and updating the model appropriately.&lt;br /&gt;
 &lt;br /&gt;
[[Image:Mvc_2.JPG|thumb|150px]]&lt;br /&gt;
;*http://www.enode.com/x/markup/tutorial/mvc.html&lt;br /&gt;
:This page, which is part of a tutorial, provides very basic definition of MVC and is accompanied by an instructive example  of a &amp;quot;Spinner&amp;quot;. &lt;br /&gt;
:This example explains how the data in the model is displayed by the view and how an &amp;quot;event action&amp;quot; is recognized by the controller which modifies model as required. It also briefly introduces the concept of multiple controllers modifying the same model.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;MVC dealt theoretically&amp;quot;====&lt;br /&gt;
&lt;br /&gt;
;*http://www.phpwact.org/pattern/model_view_controller&lt;br /&gt;
:This site provides a detailed overview of MVC pattern. It explains the different layers and relationship among them. It discusses the importance of structuring views, controllers and models.  It contains information about the benefits and drawbacks of MVC along with the irrelevant situations where MVC will not be helpful.&lt;br /&gt;
&lt;br /&gt;
;*http://msdn2.microsoft.com/en-us/library/ms978748.aspx&lt;br /&gt;
:This is the Microsoft's MSDN site, which poses the problem of &amp;quot;How do you modularize the user interface functionality of a Web application so that you can easily modify the individual parts?&amp;quot; and also provides the forces that act on the system given the situation. Having given a good description of the problem , the websites proceeds to give a concise description about how the MVC design pattern solves the problem posed. It also provides the user insight into variations of MVC that are available.&lt;br /&gt;
&lt;br /&gt;
;*http://www.jdl.co.uk/briefings%5CMVC.pdf&lt;br /&gt;
:This is a 6-page document on MVC. Though it does not provide a insight into the MVC as a design pattern, it does identify various aspects of it, which needs to be understood for understanding the pattern.&lt;br /&gt;
&lt;br /&gt;
;*[http://en.wikipedia.org/wiki/Model-view-controller Wikipedia entry on MVC]&lt;br /&gt;
:The most referred to link while dealing with any topic. After giving brief history of MVC, it provides lucid introduction to the MVC design pattern followed by brief explanation language-specific implementation of MVC in Java, Ruby, Perl, .NET.&lt;br /&gt;
&lt;br /&gt;
;*http://livedocs.adobe.com/flash/9.0/UsingFlash/help.html?content=WSd60f23110762d6b883b18f10cb1fe1af6-7b36.html&lt;br /&gt;
:It defines the MVC design pattern and explains the concept and how it helps simplifies the developer’s work and also improves the maintainability of the code&lt;br /&gt;
&lt;br /&gt;
;*http://articles.techrepublic.com.com/5100-22-1049862.html&lt;br /&gt;
:Articles in Tech Republic that explain in a lucid way the MVC pattern, where it is best used and couple of its disadvantages.&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;Implementation Specific&amp;quot; Websites ====&lt;br /&gt;
&lt;br /&gt;
The following sites illustrate the implementation of MVC in different programming languages like SmallTalk (MVC was originally created for this), Java, Ruby, ASP .NET etc.&lt;br /&gt;
&lt;br /&gt;
=====SmallTalk=====&lt;br /&gt;
;*[http://st-www.cs.uiuc.edu/users/smarch/st-docs/mvc.html MVC architecture First Proposal] &lt;br /&gt;
:This provides the paper by Steve Burbeck, who initially proposed the concept of MVC for Small Talk programming. It provides overview of how to use to MVC for application programming in Smalltalk. It discusses the communication within and between the 3 layers of MVC.  It contains information about existing view hierarchy. Some of the existing views are browsers inspectors and debuggers.&lt;br /&gt;
&lt;br /&gt;
=====Java=====&lt;br /&gt;
;*http://www.csis.pace.edu/~bergin/mvc/mvcgui.html&lt;br /&gt;
:This site gives a simple example of Temperature Control system implemented in java using the Observer and Observable ( these classes have been defined in java in order to implement the MVC architecture in Java)  .This site explains in a very instructional way of how to implement MVC in java.&lt;br /&gt;
&lt;br /&gt;
;*http://www.developer.com/java/ent/article.php/3336761&lt;br /&gt;
:This site highlights the importance of MVC patterns and its application in many GUI-based applications, client interfaces, and widget toolkits for manipulating and storing data for the end users. Java’s Swing toolkit is a perfect example. The site explains the implementation of MVC in swing. It provides a listing of all components in the model interface. There is a sample code that would help a user to see the functionality of all examples.&lt;br /&gt;
&lt;br /&gt;
;*http://java.sun.com/blueprints/patterns/MVC-detailed.html&lt;br /&gt;
:This SUN site poses a simple situation where the MVC design pattern can be applied and used to solve the problem using JSP’s to render the views, Servlets as controllers, EJB as models&lt;br /&gt;
&lt;br /&gt;
;*http://www.ifi.unizh.ch/richter/Classes/oose2/03_mvc/02_mvc_java/02_mvc_java.html#4%20Models%20as%20Proxies &lt;br /&gt;
:This site is an extension to earlier site and provides detailed explanation about the usage of MVC architecture in Java’s Swing. This site is for the advanced users who need to apply MVC in visual programming.&lt;br /&gt;
&lt;br /&gt;
;*[http://images.google.com/imgres?imgurl=http://publib.boulder.ibm.com/infocenter/wsadhelp/v5r1m2/topic/com.ibm.etools.struts.doc/images/cstrdoc018.gif&amp;amp;imgrefurl=http://publib.boulder.ibm.com/infocenter/wsadhelp/v5r1m2/topic/com.ibm.etools.struts.doc/topics/cstrdoc001.html&amp;amp;h=322&amp;amp;w=628&amp;amp;sz=30&amp;amp;hl=en&amp;amp;start=2&amp;amp;um=1&amp;amp;tbnid=tVyYlnDiTkYQbM:&amp;amp;tbnh=70&amp;amp;tbnw=137&amp;amp;prev=/images%3Fq%3DMVC%2B%2Bdesign%2Bpattern%26svnum%3D10%26um%3D1%26hl%3Den%26sa%3DX Google Image explaining MVC in Java]&lt;br /&gt;
:This provides pictorial representation of applications of MVC in Java. It contains images along with explanation for the MVC pattern used in Java explaining MVC and how is it integrated with JSP and struts in Java. &lt;br /&gt;
=====Ruby-On-Rails=====&lt;br /&gt;
;*[http://www.regdeveloper.co.uk/2006/07/17/ruby_rails_part2/ MVC example in Ruby on Rails]&lt;br /&gt;
:This is a very detailed instructional tutorial aimed at developing a MVC CRUD (Create, Read, Update, Delete) application in Ruby on Rails&lt;br /&gt;
&lt;br /&gt;
;*[http://blogs.ittoolbox.com/emergingtech/edge/archives/mvc-and-rails-12457 Blog on MVC in Ruby on Rails]&lt;br /&gt;
:This is a blog entry on MVC through the viewpoint of a Ruby on Rails developer defining MVC and giving minor details as to how MVC is implemented in Ruby on Rails.&lt;br /&gt;
&lt;br /&gt;
;*[http://wiki.rubyonrails.org/rails/pages/UnderstandingRailsMVC MVC in Rails explained in rubyonrails.org]&lt;br /&gt;
:This is an article on the Ruby on Rails official website defining the MVC usage in Rails along with links to articles within the same website for better understanding of MVC.&lt;br /&gt;
&lt;br /&gt;
;*[http://s3.amazonaws.com/sitepoint-books/ror.pdf Rails book dealing MVC architecture in Rails]&lt;br /&gt;
:This is a free download of pdf format of a book “Build your own Ruby on rails applications” by Patrick Lenz. This free pdf download expires by initial days of December//'2007//. This book provides a very wonderful development from the basics of Ruby to Ruby on Rails(RoR) and the MVC architecture explained and shown how it is embedded in RoR. This comes in conjunction with easy to learn illustrations&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
The sites mentioned above are very useful for several programmers such Java, Ruby, Smalltalk programmers. It provides a background for new users who would like to implement design patterns hand in hand with software engineering techniques. &lt;br /&gt;
Most of the sites explain the MVC as a part of implementation of MVC in their specific software or application. Only a few sites actually deal with the concept illustrating it in a lucid way with simple instructional examples.&lt;/div&gt;</summary>
		<author><name>Schinni</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=Http:/pg.ece.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2007/wiki2_3_77&amp;diff=7965</id>
		<title>Http:/pg.ece.ncsu.edu/mediawiki/index.php/CSC/ECE 517 Fall 2007/wiki2 3 77</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Http:/pg.ece.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2007/wiki2_3_77&amp;diff=7965"/>
		<updated>2007-10-28T23:42:11Z</updated>

		<summary type="html">&lt;p&gt;Schinni: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Model/View/Controller Websites Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Topic ===&lt;br /&gt;
----&lt;br /&gt;
Model/view/controller. There are literally hundreds of pages describing MVC on the Web. If someone wants to learn about it, what should (s)he do? Look at the first few hits in Google? I expect we can do better than that. Write a review of the MVC sites on the Web. Which are best for learning about the concept? Which have the most instructive examples? Which are best for explaining how to use the pattern in Ruby and Java? If you choose this topic, you should be sure to peruse at least several dozen sites.&lt;br /&gt;
&lt;br /&gt;
=== Introduction to Model/View/Controller (MVC)===&lt;br /&gt;
----&lt;br /&gt;
This is an architectural pattern adopted in software engineering. Generally, complex computer applications deal with large amount of data in conjunction with the functionality accessing this data. This generally becomes difficult to handle. Hence the programmer prefers to separate the functionality and data (model) from the user interface (view). This technique is very useful since any changes made to user interface may not affect the functionality of the program and vice versa.  The data may be reorganized without making any changes in user interface. This is accomplished by decoupling data access from data presentation and user interface by the introduction of an intermediate component named controller.&lt;br /&gt;
&lt;br /&gt;
[[Image:Mvc1.JPG]]&lt;br /&gt;
The application is decoupled into three layers that would allow flexibility and reuse: &lt;br /&gt;
&lt;br /&gt;
'''Model:''' This is the domain-specific representation of information where the application operates. It knows about all the operations that can be used to transform this information. But it has no idea how these operations are invoked.&lt;br /&gt;
&lt;br /&gt;
'''Controller:''' This layer responds to the user (user inputs) which may invoke changes on the model. More specifically as mentioned by “Martin Fowler” in his book “Patterns of Enterprise Application Architecture” in a lucid way “Controller takes user input, manipulates the model and causes the view to update properly”&lt;br /&gt;
&lt;br /&gt;
'''View:''' This layer provides the user interface element. This is the user-visible view of the model where the information is presented in a domain-specific and user-friendly way.&lt;br /&gt;
&lt;br /&gt;
The MVC architectural pattern is very useful for the purpose of web development applications. One of the main purpose it serves is the separation of concerns. Hence, code is cleaner and easier to understand. The other advantage is reusability. The model can be enhanced in order to improve the functionality of the code with very minimal changes to the controller or view. &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Categories of Websites ===&lt;br /&gt;
&lt;br /&gt;
There are many sites available online about MVC which are very useful to a newbie. Certain websites provide proper pictorial representation and conceptual view of architectural pattern while some provide insight into the interaction between the different layers (i.e. model, controller and view). The websites can be categorized into two broad divisions, &amp;quot;Basic Concept&amp;quot;, &amp;quot;Implementation-Specific&amp;quot; and &amp;quot;Examples :&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;MVC Explained with an Example&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Any concept explained through an example is better understood than just theoretical description.Thus, while categorizing websites higher priority is given to those which explain MVC with an example.&lt;br /&gt;
&lt;br /&gt;
;*http://cristobal.baray.com/indiana/projects/mvc.html&lt;br /&gt;
:This site provides the perfect place for a novice of MVC to start. This was written in a conversational style and easy to understand. As we proceed with the blue arrows provided on the right bottom corner or the right-top corner, the  author slowly develops MVC concept and explains it through a very simple instructive example of &amp;quot;Heart-Beat&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
:Example: The heart-beat example consists of the interface as shown below .&lt;br /&gt;
[[Image:Heartbeat.JPG]]&lt;br /&gt;
&lt;br /&gt;
This particular example creates 2 separate Java windows for view and controller.After the details how this example is implemented, the author again explains the concept of MVC with respect to the example.&lt;br /&gt;
&lt;br /&gt;
[[Image:NOW.JPG]]&lt;br /&gt;
&lt;br /&gt;
;*http://www.adobe.com/devnet/flash/articles/mv_controller.html&lt;br /&gt;
:Starting off with a one line description of MVC and with a &amp;quot;Toggle button&amp;quot; example, this chapter &amp;quot;The Model-View-Controller Design Pattern&amp;quot; from the book &amp;quot;Essential ActionScript 2.0&amp;quot; provides a very instructive explaination of MVC design pattern.The responsibilities of the MVC are elaborated with a running example of a Clock. &lt;br /&gt;
 &lt;br /&gt;
[[Image:Adobe_MVC.gif]]&lt;br /&gt;
&lt;br /&gt;
:This site gives 2 examples, &amp;quot;Toggle&amp;quot; and &amp;quot;Clock&amp;quot;, second one being the running example across the excerpt.This example explains the responsibilities of each model,view. It also justifies the usage of MVC with the example which gives us a better insight into the MVC architecture as a whole.&lt;br /&gt;
&lt;br /&gt;
;*http://ist.berkeley.edu/as/ag/pub/pdf/mvc-seminar.pdf&lt;br /&gt;
:This provides a brief info on the history of design patterns and in particular MVC. The seminar proceeds to provide a brief introduction to MVC and then proceeds to its example of &amp;quot;Student_Information&amp;quot;.It then uses this example to explain in detail the concept of each of the Model, View and Controller. It also provides information about various technologies available for implementing MVC.&lt;br /&gt;
:This pdf provides a application Student_Information as an example of MVC. In this application, the view displays the info, the model stores the relevant information and the controller provides the relevant API's needed for receiving user_input and updating the model appropriately.&lt;br /&gt;
 &lt;br /&gt;
[[Image:Mvc_2.JPG|thumb|150px]]&lt;br /&gt;
;*http://www.enode.com/x/markup/tutorial/mvc.html&lt;br /&gt;
:This page, which is part of a tutorial, provides very basic definition of MVC and is accompanied by an instructive example  of a &amp;quot;Spinner&amp;quot;. &lt;br /&gt;
:This example explains how the data in the model is displayed by the view and how an &amp;quot;event action&amp;quot; is recognized by the controller which modifies model as required. It also briefly introduces the concept of multiple controllers modifying the same model.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;MVC dealt theoretically&amp;quot;====&lt;br /&gt;
&lt;br /&gt;
;*http://www.phpwact.org/pattern/model_view_controller&lt;br /&gt;
:This site provides a detailed overview of MVC pattern. It explains the different layers and relationship among them. It discusses the importance of structuring views, controllers and models.  It contains information about the benefits and drawbacks of MVC along with the irrelevant situations where MVC will not be helpful.&lt;br /&gt;
&lt;br /&gt;
;*http://msdn2.microsoft.com/en-us/library/ms978748.aspx&lt;br /&gt;
:This is the Microsoft's MSDN site, which poses the problem of &amp;quot;How do you modularize the user interface functionality of a Web application so that you can easily modify the individual parts?&amp;quot; and also provides the forces that act on the system given the situation. Having given a good description of the problem , the websites proceeds to give a concise description about how the MVC design pattern solves the problem posed. It also provides the user insight into variations of MVC that are available.&lt;br /&gt;
&lt;br /&gt;
;*http://www.jdl.co.uk/briefings%5CMVC.pdf&lt;br /&gt;
:This is a 6-page document on MVC. Though it does not provide a insight into the MVC as a design pattern, it does identify various aspects of it, which needs to be understood for understanding the pattern.&lt;br /&gt;
&lt;br /&gt;
;*[http://en.wikipedia.org/wiki/Model-view-controller Wikipedia entry on MVC]&lt;br /&gt;
:The most referred to link while dealing with any topic. After giving brief history of MVC, it provides lucid introduction to the MVC design pattern followed by brief explanation language-specific implementation of MVC in Java, Ruby, Perl, .NET.&lt;br /&gt;
&lt;br /&gt;
;*http://livedocs.adobe.com/flash/9.0/UsingFlash/help.html?content=WSd60f23110762d6b883b18f10cb1fe1af6-7b36.html&lt;br /&gt;
:It defines the MVC design pattern and explains the concept and how it helps simplifies the developer’s work and also improves the maintainability of the code&lt;br /&gt;
&lt;br /&gt;
;*http://articles.techrepublic.com.com/5100-22-1049862.html&lt;br /&gt;
:Articles in Tech Republic that explain in a lucid way the MVC pattern, where it is best used and couple of its disadvantages.&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;Implementation Specific&amp;quot; Websites ====&lt;br /&gt;
&lt;br /&gt;
The following sites illustrate the implementation of MVC in different programming languages like SmallTalk (MVC was originally created for this), Java, Ruby, ASP .NET etc.&lt;br /&gt;
&lt;br /&gt;
=====SmallTalk=====&lt;br /&gt;
;*[http://st-www.cs.uiuc.edu/users/smarch/st-docs/mvc.html MVC architecture First Proposal] &lt;br /&gt;
:This provides the paper by Steve Burbeck, who initially proposed the concept of MVC for Small Talk programming. It provides overview of how to use to MVC for application programming in Smalltalk. It discusses the communication within and between the 3 layers of MVC.  It contains information about existing view hierarchy. Some of the existing views are browsers inspectors and debuggers.&lt;br /&gt;
&lt;br /&gt;
=====Java=====&lt;br /&gt;
;*http://www.csis.pace.edu/~bergin/mvc/mvcgui.html&lt;br /&gt;
:This site gives a simple example of Temperature Control system implemented in java using the Observer and Observable ( these classes have been defined in java in order to implement the MVC architecture in Java)  .This site explains in a very instructional way of how to implement MVC in java.&lt;br /&gt;
&lt;br /&gt;
;*http://www.developer.com/java/ent/article.php/3336761&lt;br /&gt;
:This site highlights the importance of MVC patterns and its application in many GUI-based applications, client interfaces, and widget toolkits for manipulating and storing data for the end users. Java’s Swing toolkit is a perfect example. The site explains the implementation of MVC in swing. It provides a listing of all components in the model interface. There is a sample code that would help a user to see the functionality of all examples.&lt;br /&gt;
&lt;br /&gt;
;*http://java.sun.com/blueprints/patterns/MVC-detailed.html&lt;br /&gt;
:This SUN site poses a simple situation where the MVC design pattern can be applied and used to solve the problem using JSP’s to render the views, Servlets as controllers, EJB as models&lt;br /&gt;
&lt;br /&gt;
;*http://www.ifi.unizh.ch/richter/Classes/oose2/03_mvc/02_mvc_java/02_mvc_java.html#4%20Models%20as%20Proxies &lt;br /&gt;
:This site is an extension to earlier site and provides detailed explanation about the usage of MVC architecture in Java’s Swing. This site is for the advanced users who need to apply MVC in visual programming.&lt;br /&gt;
&lt;br /&gt;
;*[http://images.google.com/imgres?imgurl=http://publib.boulder.ibm.com/infocenter/wsadhelp/v5r1m2/topic/com.ibm.etools.struts.doc/images/cstrdoc018.gif&amp;amp;imgrefurl=http://publib.boulder.ibm.com/infocenter/wsadhelp/v5r1m2/topic/com.ibm.etools.struts.doc/topics/cstrdoc001.html&amp;amp;h=322&amp;amp;w=628&amp;amp;sz=30&amp;amp;hl=en&amp;amp;start=2&amp;amp;um=1&amp;amp;tbnid=tVyYlnDiTkYQbM:&amp;amp;tbnh=70&amp;amp;tbnw=137&amp;amp;prev=/images%3Fq%3DMVC%2B%2Bdesign%2Bpattern%26svnum%3D10%26um%3D1%26hl%3Den%26sa%3DX Google Image explaining MVC in Java]&lt;br /&gt;
:This provides pictorial representation of applications of MVC in Java. It contains images along with explanation for the MVC pattern used in Java explaining MVC and how is it integrated with JSP and struts in Java. &lt;br /&gt;
=====Ruby-On-Rails=====&lt;br /&gt;
;*[http://www.regdeveloper.co.uk/2006/07/17/ruby_rails_part2/ MVC example in Ruby on Rails]&lt;br /&gt;
:This is a very detailed instructional tutorial aimed at developing a MVC CRUD (Create, Read, Update, Delete) application in Ruby on Rails&lt;br /&gt;
&lt;br /&gt;
;*[http://blogs.ittoolbox.com/emergingtech/edge/archives/mvc-and-rails-12457 Blog on MVC in Ruby on Rails]&lt;br /&gt;
:This is a blog entry on MVC through the viewpoint of a Ruby on Rails developer defining MVC and giving minor details as to how MVC is implemented in Ruby on Rails.&lt;br /&gt;
&lt;br /&gt;
;*[http://wiki.rubyonrails.org/rails/pages/UnderstandingRailsMVC MVC in Rails explained in rubyonrails.org]&lt;br /&gt;
:This is an article on the Ruby on Rails official website defining the MVC usage in Rails along with links to articles within the same website for better understanding of MVC.&lt;br /&gt;
&lt;br /&gt;
;*[http://s3.amazonaws.com/sitepoint-books/ror.pdf Rails book dealing MVC architecture in Rails]&lt;br /&gt;
:This is a free download of pdf format of a book “Build your own Ruby on rails applications” by Patrick Lenz. This free pdf download expires by initial days of December//'2007//. This book provides a very wonderful development from the basics of Ruby to Ruby on Rails(RoR) and the MVC architecture explained and shown how it is embedded in RoR. This comes in conjunction with easy to learn illustrations&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
The sites mentioned above are very useful for several programmers such Java, PHP, Smalltalk programmers. It provides a background for new users who would like to implement design patterns hand in hand with software engineering techniques. &lt;br /&gt;
Most of the sites explain the MVC as a part of implementation of MVC in their specific software or application. Only a few sites actually deal with the concept illustrating it in a lucid way with simple instructional examples.&lt;/div&gt;</summary>
		<author><name>Schinni</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=Http:/pg.ece.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2007/wiki2_3_77&amp;diff=7964</id>
		<title>Http:/pg.ece.ncsu.edu/mediawiki/index.php/CSC/ECE 517 Fall 2007/wiki2 3 77</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Http:/pg.ece.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2007/wiki2_3_77&amp;diff=7964"/>
		<updated>2007-10-28T23:41:42Z</updated>

		<summary type="html">&lt;p&gt;Schinni: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Model/View/Controller Websites Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Topic ===&lt;br /&gt;
----&lt;br /&gt;
Model/view/controller. There are literally hundreds of pages describing MVC on the Web. If someone wants to learn about it, what should (s)he do? Look at the first few hits in Google? I expect we can do better than that. Write a review of the MVC sites on the Web. Which are best for learning about the concept? Which have the most instructive examples? Which are best for explaining how to use the pattern in Ruby and Java? If you choose this topic, you should be sure to peruse at least several dozen sites.&lt;br /&gt;
&lt;br /&gt;
=== Introduction to Model/View/Controller (MVC)===&lt;br /&gt;
----&lt;br /&gt;
This is an architectural pattern adopted in software engineering. Generally, complex computer applications deal with large amount of data in conjunction with the functionality accessing this data. This generally becomes difficult to handle. Hence the programmer prefers to separate the functionality and data (model) from the user interface (view). This technique is very useful since any changes made to user interface may not affect the functionality of the program and vice versa.  The data may be reorganized without making any changes in user interface. This is accomplished by decoupling data access from data presentation and user interface by the introduction of an intermediate component named controller.&lt;br /&gt;
&lt;br /&gt;
[[Image:Mvc1.JPG]]&lt;br /&gt;
The application is decoupled into three layers that would allow flexibility and reuse: &lt;br /&gt;
&lt;br /&gt;
'''Model:''' This is the domain-specific representation of information where the application operates. It knows about all the operations that can be used to transform this information. But it has no idea how these operations are invoked.&lt;br /&gt;
&lt;br /&gt;
'''Controller:''' This layer responds to the user (user inputs) which may invoke changes on the model. More specifically as mentioned by “Martin Fowler” in his book “Patterns of Enterprise Application Architecture” in a lucid way “Controller takes user input, manipulates the model and causes the view to update properly”&lt;br /&gt;
&lt;br /&gt;
'''View:''' This layer provides the user interface element. This is the user-visible view of the model where the information is presented in a domain-specific and user-friendly way.&lt;br /&gt;
&lt;br /&gt;
The MVC architectural pattern is very useful for the purpose of web development applications. One of the main purpose it serves is the separation of concerns. Hence, code is cleaner and easier to understand. The other advantage is reusability. The model can be enhanced in order to improve the functionality of the code with very minimal changes to the controller or view. &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Categories of Websites ===&lt;br /&gt;
&lt;br /&gt;
There are many sites available online about MVC which are very useful to a newbie. Certain websites provide proper pictorial representation and conceptual view of architectural pattern while some provide insight into the interaction between the different layers (i.e. model, controller and view). The websites can be categorized into two broad divisions, &amp;quot;Basic Concept&amp;quot;, &amp;quot;Implementation-Specific&amp;quot; and &amp;quot;Examples :&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;MVC Explained with an Example&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Any concept explained through an example is better understood than just theoretical description.Thus, while categorizing websites higher priority is given to those which explain MVC with an example.&lt;br /&gt;
&lt;br /&gt;
;*http://cristobal.baray.com/indiana/projects/mvc.html&lt;br /&gt;
:This site provides the perfect place for a novice of MVC to start. This was written in a conversational style and easy to understand. As we proceed with the blue arrows provided on the right bottom corner or the right-top corner, the  author slowly develops MVC concept and explains it through a very simple instructive example of &amp;quot;Heart-Beat&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
:Example: The heart-beat example consists of the interface as shown below .&lt;br /&gt;
[[Image:Heartbeat.JPG]]&lt;br /&gt;
&lt;br /&gt;
This particular example creates 2 separate Java windows for view and controller.After the details how this example is implemented, the author again explains the concept of MVC with respect to the example.&lt;br /&gt;
&lt;br /&gt;
[[Image:NOW.JPG]]&lt;br /&gt;
&lt;br /&gt;
;*http://www.adobe.com/devnet/flash/articles/mv_controller.html&lt;br /&gt;
:Starting off with a one line description of MVC and with a &amp;quot;Toggle button&amp;quot; example, this chapter &amp;quot;The Model-View-Controller Design Pattern&amp;quot; from the book &amp;quot;Essential ActionScript 2.0&amp;quot; provides a very instructive explaination of MVC design pattern.The responsibilities of the MVC are elaborated with a running example of a Clock. &lt;br /&gt;
 &lt;br /&gt;
[[Image:Adobe_MVC.gif]]&lt;br /&gt;
&lt;br /&gt;
:This site gives 2 examples, &amp;quot;Toggle&amp;quot; and &amp;quot;Clock&amp;quot;, second one being the running example across the excerpt.This example explains the responsibilities of each model,view. It also justifies the usage of MVC with the example which gives us a better insight into the MVC architecture as a whole.&lt;br /&gt;
&lt;br /&gt;
;*http://ist.berkeley.edu/as/ag/pub/pdf/mvc-seminar.pdf&lt;br /&gt;
:This provides a brief info on the history of design patterns and in particular MVC. The seminar proceeds to provide a brief introduction to MVC and then proceeds to its example of &amp;quot;Student_Information&amp;quot;.It then uses this example to explain in detail the concept of each of the Model, View and Controller. It also provides information about various technologies available for implementing MVC.&lt;br /&gt;
:This pdf provides a application Student_Information as an example of MVC. In this application, the view displays the info, the model stores the relevant information and the controller provides the relevant API's needed for receiving user_input and updating the model appropriately.&lt;br /&gt;
 &lt;br /&gt;
[[Image:Mvc_2.JPG|thumb|150px]]&lt;br /&gt;
;*http://www.enode.com/x/markup/tutorial/mvc.html&lt;br /&gt;
:This page, which is part of a tutorial, provides very basic definition of MVC and is accompanied by an instructive example  of a &amp;quot;Spinner&amp;quot;. &lt;br /&gt;
:This example explains how the data in the model is displayed by the view and how an &amp;quot;event action&amp;quot; is recognized by the controller which modifies model as required. It also briefly introduces the concept of multiple controllers modifying the same model.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;MVC dealt theoretically&amp;quot;====&lt;br /&gt;
&lt;br /&gt;
;*http://www.phpwact.org/pattern/model_view_controller&lt;br /&gt;
:This site provides a detailed overview of MVC pattern. It explains the different layers and relationship among them. It discusses the importance of structuring views, controllers and models.  It contains information about the benefits and drawbacks of MVC along with the irrelevant situations where MVC will not be helpful.&lt;br /&gt;
&lt;br /&gt;
;*http://msdn2.microsoft.com/en-us/library/ms978748.aspx&lt;br /&gt;
:This is the Microsoft's MSDN site, which poses the problem of &amp;quot;How do you modularize the user interface functionality of a Web application so that you can easily modify the individual parts?&amp;quot; and also provides the forces that act on the system given the situation. Having given a good description of the problem , the websites proceeds to give a concise description about how the MVC design pattern solves the problem posed. It also provides the user insight into variations of MVC that are available.&lt;br /&gt;
&lt;br /&gt;
;*http://www.jdl.co.uk/briefings%5CMVC.pdf&lt;br /&gt;
:This is a 6-page document on MVC. Though it does not provide a insight into the MVC as a design pattern, it does identify various aspects of it, which needs to be understood for understanding the pattern.&lt;br /&gt;
&lt;br /&gt;
;*[http://en.wikipedia.org/wiki/Model-view-controller Wikipedia entry on MVC]&lt;br /&gt;
:The most referred to link while dealing with any topic. After giving brief history of MVC, it provides lucid introduction to the MVC design pattern followed by brief explanation language-specific implementation of MVC in Java, Ruby, Perl, .NET.&lt;br /&gt;
&lt;br /&gt;
;*http://livedocs.adobe.com/flash/9.0/UsingFlash/help.html?content=WSd60f23110762d6b883b18f10cb1fe1af6-7b36.html&lt;br /&gt;
:It defines the MVC design pattern and explains the concept and how it helps simplifies the developer’s work and also improves the maintainability of the code&lt;br /&gt;
&lt;br /&gt;
;*http://articles.techrepublic.com.com/5100-22-1049862.html&lt;br /&gt;
:Articles in Tech Republic that explain in a lucid way the MVC pattern, where it is best used and couple of its disadvantages.&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;Implementation Specific&amp;quot; Websites ====&lt;br /&gt;
&lt;br /&gt;
The following sites illustrate the implementation of MVC in different programming languages like SmallTalk (MVC was originally created for this), Java, Ruby, ASP .NET etc.&lt;br /&gt;
&lt;br /&gt;
=====SmallTalk=====&lt;br /&gt;
;*[http://st-www.cs.uiuc.edu/users/smarch/st-docs/mvc.html MVC architecture First Proposal] &lt;br /&gt;
:This provides the paper by Steve Burbeck, who initially proposed the concept of MVC for Small Talk programming. It provides overview of how to use to MVC for application programming in Smalltalk. It discusses the communication within and between the 3 layers of MVC.  It contains information about existing view hierarchy. Some of the existing views are browsers inspectors and debuggers.&lt;br /&gt;
&lt;br /&gt;
=====Java=====&lt;br /&gt;
;*http://www.csis.pace.edu/~bergin/mvc/mvcgui.html&lt;br /&gt;
:This site gives a simple example of Temperature Control system implemented in java using the Observer and Observable ( these classes have been defined in java in order to implement the MVC architecture in Java)  .This site explains in a very instructional way of how to implement MVC in java.&lt;br /&gt;
&lt;br /&gt;
;*http://www.developer.com/java/ent/article.php/3336761&lt;br /&gt;
:This site highlights the importance of MVC patterns and its application in many GUI-based applications, client interfaces, and widget toolkits for manipulating and storing data for the end users. Java’s Swing toolkit is a perfect example. The site explains the implementation of MVC in swing. It provides a listing of all components in the model interface. There is a sample code that would help a user to see the functionality of all examples.&lt;br /&gt;
&lt;br /&gt;
;*http://java.sun.com/blueprints/patterns/MVC-detailed.html&lt;br /&gt;
:This SUN site poses a simple situation where the MVC design pattern can be applied and used to solve the problem using JSP’s to render the views, Servlets as controllers, EJB as models&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;*http://www.ifi.unizh.ch/richter/Classes/oose2/03_mvc/02_mvc_java/02_mvc_java.html#4%20Models%20as%20Proxies &lt;br /&gt;
:This site is an extension to earlier site and provides detailed explanation about the usage of MVC architecture in Java’s Swing. This site is for the advanced users who need to apply MVC in visual programming.&lt;br /&gt;
&lt;br /&gt;
;*[http://images.google.com/imgres?imgurl=http://publib.boulder.ibm.com/infocenter/wsadhelp/v5r1m2/topic/com.ibm.etools.struts.doc/images/cstrdoc018.gif&amp;amp;imgrefurl=http://publib.boulder.ibm.com/infocenter/wsadhelp/v5r1m2/topic/com.ibm.etools.struts.doc/topics/cstrdoc001.html&amp;amp;h=322&amp;amp;w=628&amp;amp;sz=30&amp;amp;hl=en&amp;amp;start=2&amp;amp;um=1&amp;amp;tbnid=tVyYlnDiTkYQbM:&amp;amp;tbnh=70&amp;amp;tbnw=137&amp;amp;prev=/images%3Fq%3DMVC%2B%2Bdesign%2Bpattern%26svnum%3D10%26um%3D1%26hl%3Den%26sa%3DX Google Image explaining MVC in Java]&lt;br /&gt;
:This provides pictorial representation of applications of MVC in Java. It contains images along with explanation for the MVC pattern used in Java explaining MVC and how is it integrated with JSP and struts in Java. &lt;br /&gt;
=====Ruby-On-Rails=====&lt;br /&gt;
;*[http://www.regdeveloper.co.uk/2006/07/17/ruby_rails_part2/ MVC example in Ruby on Rails]&lt;br /&gt;
:This is a very detailed instructional tutorial aimed at developing a MVC CRUD (Create, Read, Update, Delete) application in Ruby on Rails&lt;br /&gt;
&lt;br /&gt;
;*[http://blogs.ittoolbox.com/emergingtech/edge/archives/mvc-and-rails-12457 Blog on MVC in Ruby on Rails]&lt;br /&gt;
:This is a blog entry on MVC through the viewpoint of a Ruby on Rails developer defining MVC and giving minor details as to how MVC is implemented in Ruby on Rails.&lt;br /&gt;
&lt;br /&gt;
;*[http://wiki.rubyonrails.org/rails/pages/UnderstandingRailsMVC MVC in Rails explained in rubyonrails.org]&lt;br /&gt;
:This is an article on the Ruby on Rails official website defining the MVC usage in Rails along with links to articles within the same website for better understanding of MVC.&lt;br /&gt;
&lt;br /&gt;
;*[http://s3.amazonaws.com/sitepoint-books/ror.pdf Rails book dealing MVC architecture in Rails]&lt;br /&gt;
:This is a free download of pdf format of a book “Build your own Ruby on rails applications” by Patrick Lenz. This free pdf download expires by initial days of December//'2007//. This book provides a very wonderful development from the basics of Ruby to Ruby on Rails(RoR) and the MVC architecture explained and shown how it is embedded in RoR. This comes in conjunction with easy to learn illustrations&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
The sites mentioned above are very useful for several programmers such Java, PHP, Smalltalk programmers. It provides a background for new users who would like to implement design patterns hand in hand with software engineering techniques. &lt;br /&gt;
Most of the sites explain the MVC as a part of implementation of MVC in their specific software or application. Only a few sites actually deal with the concept illustrating it in a lucid way with simple instructional examples.&lt;/div&gt;</summary>
		<author><name>Schinni</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=Http:/pg.ece.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2007/wiki2_3_77&amp;diff=7963</id>
		<title>Http:/pg.ece.ncsu.edu/mediawiki/index.php/CSC/ECE 517 Fall 2007/wiki2 3 77</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Http:/pg.ece.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2007/wiki2_3_77&amp;diff=7963"/>
		<updated>2007-10-28T23:37:18Z</updated>

		<summary type="html">&lt;p&gt;Schinni: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Model/View/Controller Websites Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Topic ===&lt;br /&gt;
----&lt;br /&gt;
Model/view/controller. There are literally hundreds of pages describing MVC on the Web. If someone wants to learn about it, what should (s)he do? Look at the first few hits in Google? I expect we can do better than that. Write a review of the MVC sites on the Web. Which are best for learning about the concept? Which have the most instructive examples? Which are best for explaining how to use the pattern in Ruby and Java? If you choose this topic, you should be sure to peruse at least several dozen sites.&lt;br /&gt;
&lt;br /&gt;
=== Introduction to Model/View/Controller (MVC)===&lt;br /&gt;
----&lt;br /&gt;
This is an architectural pattern adopted in software engineering. Generally, complex computer applications deal with large amount of data in conjunction with the functionality accessing this data. This generally becomes difficult to handle. Hence the programmer prefers to separate the functionality and data (model) from the user interface (view). This technique is very useful since any changes made to user interface may not affect the functionality of the program and vice versa.  The data may be reorganized without making any changes in user interface. This is accomplished by decoupling data access from data presentation and user interface by the introduction of an intermediate component named controller.&lt;br /&gt;
&lt;br /&gt;
[[Image:Mvc1.JPG]]&lt;br /&gt;
The application is decoupled into three layers that would allow flexibility and reuse: &lt;br /&gt;
&lt;br /&gt;
'''Model:''' This is the domain-specific representation of information where the application operates. It knows about all the operations that can be used to transform this information. But it has no idea how these operations are invoked.&lt;br /&gt;
&lt;br /&gt;
'''Controller:''' This layer responds to the user (user inputs) which may invoke changes on the model. More specifically as mentioned by “Martin Fowler” in his book “Patterns of Enterprise Application Architecture” in a lucid way “Controller takes user input, manipulates the model and causes the view to update properly”&lt;br /&gt;
&lt;br /&gt;
'''View:''' This layer provides the user interface element. This is the user-visible view of the model where the information is presented in a domain-specific and user-friendly way.&lt;br /&gt;
&lt;br /&gt;
The MVC architectural pattern is very useful for the purpose of web development applications. One of the main purpose it serves is the separation of concerns. Hence, code is cleaner and easier to understand. The other advantage is reusability. The model can be enhanced in order to improve the functionality of the code with very minimal changes to the controller or view. &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Categories of Websites ===&lt;br /&gt;
&lt;br /&gt;
There are many sites available online about MVC which are very useful to a newbie. Certain websites provide proper pictorial representation and conceptual view of architectural pattern while some provide insight into the interaction between the different layers (i.e. model, controller and view). The websites can be categorized into two broad divisions, &amp;quot;Basic Concept&amp;quot;, &amp;quot;Implementation-Specific&amp;quot; and &amp;quot;Examples :&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;MVC Explained with an Example&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Any concept explained through an example is better understood than just theoretical description.Thus, while categorizing websites higher priority is given to those which explain MVC with an example.&lt;br /&gt;
&lt;br /&gt;
;*http://cristobal.baray.com/indiana/projects/mvc.html&lt;br /&gt;
:This site provides the perfect place for a novice of MVC to start. This was written in a conversational style and easy to understand. As we proceed with the blue arrows provided on the right bottom corner or the right-top corner, the  author slowly develops MVC concept and explains it through a very simple instructive example of &amp;quot;Heart-Beat&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
:Example: The heart-beat example consists of the interface as shown below .&lt;br /&gt;
[[Image:Heartbeat.JPG]]&lt;br /&gt;
&lt;br /&gt;
This particular example creates 2 separate Java windows for view and controller.After the details how this example is implemented, the author again explains the concept of MVC with respect to the example.&lt;br /&gt;
&lt;br /&gt;
[[Image:NOW.JPG]]&lt;br /&gt;
&lt;br /&gt;
;*http://www.adobe.com/devnet/flash/articles/mv_controller.html&lt;br /&gt;
:Starting off with a one line description of MVC and with a &amp;quot;Toggle button&amp;quot; example, this chapter &amp;quot;The Model-View-Controller Design Pattern&amp;quot; from the book &amp;quot;Essential ActionScript 2.0&amp;quot; provides a very instructive explaination of MVC design pattern.The responsibilities of the MVC are elaborated with a running example of a Clock. &lt;br /&gt;
 &lt;br /&gt;
[[Image:Adobe_MVC.gif]]&lt;br /&gt;
&lt;br /&gt;
:This site gives 2 examples, &amp;quot;Toggle&amp;quot; and &amp;quot;Clock&amp;quot;, second one being the running example across the excerpt.This example explains the responsibilities of each model,view. It also justifies the usage of MVC with the example which gives us a better insight into the MVC architecture as a whole.&lt;br /&gt;
&lt;br /&gt;
;*http://ist.berkeley.edu/as/ag/pub/pdf/mvc-seminar.pdf&lt;br /&gt;
:This provides a brief info on the history of design patterns and in particular MVC. The seminar proceeds to provide a brief introduction to MVC and then proceeds to its example of &amp;quot;Student_Information&amp;quot;.It then uses this example to explain in detail the concept of each of the Model, View and Controller. It also provides information about various technologies available for implementing MVC.&lt;br /&gt;
:This pdf provides a application Student_Information as an example of MVC. In this application, the view displays the info, the model stores the relevant information and the controller provides the relevant API's needed for receiving user_input and updating the model appropriately.&lt;br /&gt;
 &lt;br /&gt;
[[Image:Mvc_2.JPG|thumb|150px]]&lt;br /&gt;
;*http://www.enode.com/x/markup/tutorial/mvc.html&lt;br /&gt;
:This page, which is part of a tutorial, provides very basic definition of MVC and is accompanied by an instructive example  of a &amp;quot;Spinner&amp;quot;. &lt;br /&gt;
:This example explains how the data in the model is displayed by the view and how an &amp;quot;event action&amp;quot; is recognized by the controller which modifies model as required. It also briefly introduces the concept of multiple controllers modifying the same model.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;MVC dealt theoretically&amp;quot;====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
;*http://www.phpwact.org/pattern/model_view_controller&lt;br /&gt;
:This site provides a detailed overview of MVC pattern. It explains the different layers and relationship among them. It discusses the importance of structuring views, controllers and models.  It contains information about the benefits and drawbacks of MVC along with the irrelevant situations where MVC will not be helpful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;*http://msdn2.microsoft.com/en-us/library/ms978748.aspx&lt;br /&gt;
:This is the Microsoft's MSDN site, which poses the problem of &amp;quot;How do you modularize the user interface functionality of a Web application so that you can easily modify the individual parts?&amp;quot; and also provides the forces that act on the system given the situation. Having given a good description of the problem , the websites proceeds to give a concise description about how the MVC design pattern solves the problem posed. It also provides the user insight into variations of MVC that are available.&lt;br /&gt;
&lt;br /&gt;
;*http://www.jdl.co.uk/briefings%5CMVC.pdf&lt;br /&gt;
This is a 6-page document on MVC. Though it does not provide a insight into the MVC as a design pattern, it does identify various aspects of it, which needs to be understood for understanding the pattern.&lt;br /&gt;
&lt;br /&gt;
;*[http://en.wikipedia.org/wiki/Model-view-controller Wikipedia entry on MVC]&lt;br /&gt;
:The most referred to link while dealing with any topic. After giving brief history of MVC, it provides lucid introduction to the MVC design pattern followed by brief explanation language-specific implementation of MVC in Java, Ruby, Perl, .NET.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;*http://livedocs.adobe.com/flash/9.0/UsingFlash/help.html?content=WSd60f23110762d6b883b18f10cb1fe1af6-7b36.html&lt;br /&gt;
:It defines the MVC design pattern and explains the concept and how it helps simplifies the developer’s work and also improves the maintainability of the code&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;*http://articles.techrepublic.com.com/5100-22-1049862.html&lt;br /&gt;
:Articles in Tech Republic that explain in a lucid way the MVC pattern, where it is best used and couple of its disadvantages.&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;Implementation Specific&amp;quot; Websites ====&lt;br /&gt;
&lt;br /&gt;
The following sites illustrate the implementation of MVC in different programming languages like SmallTalk (MVC was originally created for this), Java, Ruby, ASP .NET etc.&lt;br /&gt;
&lt;br /&gt;
=====SmallTalk=====&lt;br /&gt;
;*[http://st-www.cs.uiuc.edu/users/smarch/st-docs/mvc.html MVC architecture First Proposal] &lt;br /&gt;
:This provides the paper by Steve Burbeck, who initially proposed the concept of MVC for Small Talk programming. It provides overview of how to use to MVC for application programming in Smalltalk. It discusses the communication within and between the 3 layers of MVC.  It contains information about existing view hierarchy. Some of the existing views are browsers inspectors and debuggers.&lt;br /&gt;
&lt;br /&gt;
=====Java=====&lt;br /&gt;
;*http://www.csis.pace.edu/~bergin/mvc/mvcgui.html&lt;br /&gt;
:This site gives a simple example of Temperature Control system implemented in java using the Observer and Observable ( these classes have been defined in java in order to implement the MVC architecture in Java)  .This site explains in a very instructional way of how to implement MVC in java.&lt;br /&gt;
&lt;br /&gt;
;*http://www.developer.com/java/ent/article.php/3336761&lt;br /&gt;
:This site highlights the importance of MVC patterns and its application in many GUI-based applications, client interfaces, and widget toolkits for manipulating and storing data for the end users. Java’s Swing toolkit is a perfect example. The site explains the implementation of MVC in swing. It provides a listing of all components in the model interface. There is a sample code that would help a user to see the functionality of all examples.&lt;br /&gt;
&lt;br /&gt;
;*http://java.sun.com/blueprints/patterns/MVC-detailed.html&lt;br /&gt;
:This SUN site poses a simple situation where the MVC design pattern can be applied and used to solve the problem using JSP’s to render the views, Servlets as controllers, EJB as models&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;*http://www.ifi.unizh.ch/richter/Classes/oose2/03_mvc/02_mvc_java/02_mvc_java.html#4%20Models%20as%20Proxies &lt;br /&gt;
:This site is an extension to earlier site and provides detailed explanation about the usage of MVC architecture in Java’s Swing. This site is for the advanced users who need to apply MVC in visual programming.&lt;br /&gt;
&lt;br /&gt;
;*[http://images.google.com/imgres?imgurl=http://publib.boulder.ibm.com/infocenter/wsadhelp/v5r1m2/topic/com.ibm.etools.struts.doc/images/cstrdoc018.gif&amp;amp;imgrefurl=http://publib.boulder.ibm.com/infocenter/wsadhelp/v5r1m2/topic/com.ibm.etools.struts.doc/topics/cstrdoc001.html&amp;amp;h=322&amp;amp;w=628&amp;amp;sz=30&amp;amp;hl=en&amp;amp;start=2&amp;amp;um=1&amp;amp;tbnid=tVyYlnDiTkYQbM:&amp;amp;tbnh=70&amp;amp;tbnw=137&amp;amp;prev=/images%3Fq%3DMVC%2B%2Bdesign%2Bpattern%26svnum%3D10%26um%3D1%26hl%3Den%26sa%3DX Google Image explaining MVC in Java]&lt;br /&gt;
:This provides pictorial representation of applications of MVC in Java. It contains images along with explanation for the MVC pattern used in Java explaining MVC and how is it integrated with JSP and struts in Java. &lt;br /&gt;
=====Ruby-On-Rails=====&lt;br /&gt;
;*[http://www.regdeveloper.co.uk/2006/07/17/ruby_rails_part2/ MVC example in Ruby on Rails]&lt;br /&gt;
:This is a very detailed instructional tutorial aimed at developing a MVC CRUD (Create, Read, Update, Delete) application in Ruby on Rails&lt;br /&gt;
&lt;br /&gt;
;*[http://blogs.ittoolbox.com/emergingtech/edge/archives/mvc-and-rails-12457 Blog on MVC in Ruby on Rails]&lt;br /&gt;
:This is a blog entry on MVC through the viewpoint of a Ruby on Rails developer defining MVC and giving minor details as to how MVC is implemented in Ruby on Rails.&lt;br /&gt;
&lt;br /&gt;
;*[http://wiki.rubyonrails.org/rails/pages/UnderstandingRailsMVC MVC in Rails explained in rubyonrails.org]&lt;br /&gt;
:This is an article on the Ruby on Rails official website defining the MVC usage in Rails along with links to articles within the same website for better understanding of MVC.&lt;br /&gt;
&lt;br /&gt;
;*[http://s3.amazonaws.com/sitepoint-books/ror.pdf Rails book dealing MVC architecture in Rails]&lt;br /&gt;
:This is a free download of pdf format of a book “Build your own Ruby on rails applications” by Patrick Lenz. This free pdf download expires by initial days of December//'2007//. This book provides a very wonderful development from the basics of Ruby to Ruby on Rails(RoR) and the MVC architecture explained and shown how it is embedded in RoR. This comes in conjunction with easy to learn illustrations&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
The sites mentioned above are very useful for several programmers such Java, PHP, Smalltalk programmers. It provides a background for new users who would like to implement design patterns hand in hand with software engineering techniques. &lt;br /&gt;
Most of the sites explain the MVC as a part of implementation of MVC in their specific software or application. Only a few sites actually deal with the concept illustrating it in a lucid way with simple instructional examples.&lt;/div&gt;</summary>
		<author><name>Schinni</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=Http:/pg.ece.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2007/wiki2_3_77&amp;diff=7941</id>
		<title>Http:/pg.ece.ncsu.edu/mediawiki/index.php/CSC/ECE 517 Fall 2007/wiki2 3 77</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Http:/pg.ece.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2007/wiki2_3_77&amp;diff=7941"/>
		<updated>2007-10-28T21:30:03Z</updated>

		<summary type="html">&lt;p&gt;Schinni: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Model/View/Controller Websites Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Topic ===&lt;br /&gt;
----&lt;br /&gt;
Model/view/controller. There are literally hundreds of pages describing MVC on the Web. If someone wants to learn about it, what should (s)he do? Look at the first few hits in Google? I expect we can do better than that. Write a review of the MVC sites on the Web. Which are best for learning about the concept? Which have the most instructive examples? Which are best for explaining how to use the pattern in Ruby and Java? If you choose this topic, you should be sure to peruse at least several dozen sites.&lt;br /&gt;
&lt;br /&gt;
=== Introduction to Model/View/Controller (MVC)===&lt;br /&gt;
----&lt;br /&gt;
This is an architectural pattern adopted in software engineering. Generally, complex computer applications deal with large amount of data in conjunction with the functionality accessing this data. This generally becomes difficult to handle. Hence the programmer prefers to separate the functionality and data (model) from the user interface (view). This technique is very useful since any changes made to user interface may not affect the functionality of the program and vice versa.  The data may be reorganized without making any changes in user interface. This is accomplished by decoupling data access from data presentation and user interface by the introduction of an intermediate component named controller.&lt;br /&gt;
&lt;br /&gt;
[[Image:Mvc1.JPG]]&lt;br /&gt;
The application is decoupled into three layers that would allow flexibility and reuse: &lt;br /&gt;
&lt;br /&gt;
'''Model:''' This is the domain-specific representation of information where the application operates. It knows about all the operations that can be used to transform this information. But it has no idea how these operations are invoked.&lt;br /&gt;
&lt;br /&gt;
'''Controller:''' This layer responds to the user (user inputs) which may invoke changes on the model. More specifically as mentioned by “Martin Fowler” in his book “Patterns of Enterprise Application Architecture” in a lucid way “Controller takes user input, manipulates the model and causes the view to update properly”&lt;br /&gt;
&lt;br /&gt;
'''View:''' This layer provides the user interface element. This is the user-visible view of the model where the information is presented in a domain-specific and user-friendly way.&lt;br /&gt;
&lt;br /&gt;
The MVC architectural pattern is very useful for the purpose of web development applications. One of the main purpose it serves is the separation of concerns. Hence, code is cleaner and easier to understand. The other advantage is reusability. The model can be enhanced in order to improve the functionality of the code with very minimal changes to the controller or view. &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Categories of Websites ===&lt;br /&gt;
&lt;br /&gt;
There are many sites available online about MVC which are very useful to a newbie. Certain websites provide proper pictorial representation and conceptual view of architectural pattern while some provide insight into the interaction between the different layers (i.e. model, controller and view). The websites can be categorized into two broad divisions, &amp;quot;Basic Concept&amp;quot;, &amp;quot;Implementation-Specific&amp;quot; and &amp;quot;Examples :&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;MVC Explained with an Example&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Any concept explained through an example is better understood than just theoretical description.Thus, while categorizing websites higher priority is given to those which explain MVC with an example.&lt;br /&gt;
&lt;br /&gt;
;*http://cristobal.baray.com/indiana/projects/mvc.html&lt;br /&gt;
:This site provides the perfect place for a novice of MVC to start. This was written in a conversational style and easy to understand. As we proceed with the blue arrows provided on the right bottom corner or the right-top corner, the  author slowly develops MVC concept and explains it through a very simple instructive example of &amp;quot;Heart-Beat&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
:Example: The heart-beat example consists of the interface as shown below .&lt;br /&gt;
[[Image:Heartbeat.JPG]]&lt;br /&gt;
&lt;br /&gt;
This particular example creates 2 separate Java windows for view and controller.After the details how this example is implemented, the author again explains the concept of MVC with respect to the example.&lt;br /&gt;
&lt;br /&gt;
[[Image:NOW.JPG]]&lt;br /&gt;
&lt;br /&gt;
;*http://www.adobe.com/devnet/flash/articles/mv_controller.html&lt;br /&gt;
:Starting off with a one line description of MVC and with a &amp;quot;Toggle button&amp;quot; example, this chapter &amp;quot;The Model-View-Controller Design Pattern&amp;quot; from the book &amp;quot;Essential ActionScript 2.0&amp;quot; provides a very instructive explaination of MVC design pattern.The responsibilities of the MVC are elaborated with a running example of a Clock. &lt;br /&gt;
 &lt;br /&gt;
[[Image:Adobe_MVC.gif]]&lt;br /&gt;
&lt;br /&gt;
:This site gives 2 examples, &amp;quot;Toggle&amp;quot; and &amp;quot;Clock&amp;quot;, second one being the running example across the excerpt.This example explains the responsibilities of each model,view. It also justifies the usage of MVC with the example which gives us a better insight into the MVC architecture as a whole.&lt;br /&gt;
&lt;br /&gt;
;*http://ist.berkeley.edu/as/ag/pub/pdf/mvc-seminar.pdf&lt;br /&gt;
:This provides a brief info on the history of design patterns and in particular MVC. The seminar proceeds to provide a brief introduction to MVC and then proceeds to its example of &amp;quot;Student_Information&amp;quot;.It then uses this example to explain in detail the concept of each of the Model, View and Controller. It also provides information about various technologies available for implementing MVC.&lt;br /&gt;
:This pdf provides a application Student_Information as an example of MVC. In this application, the view displays the info, the model stores the relevant information and the controller provides the relevant API's needed for receiving user_input and updating the model appropriately.&lt;br /&gt;
 &lt;br /&gt;
[[Image:Mvc_2.JPG|thumb|150px]]&lt;br /&gt;
;*http://www.enode.com/x/markup/tutorial/mvc.html&lt;br /&gt;
:This page, which is part of a tutorial, provides very basic definition of MVC and is accompanied by an instructive example  of a &amp;quot;Spinner&amp;quot;. &lt;br /&gt;
:This example explains how the data in the model is displayed by the view and how an &amp;quot;event action&amp;quot; is recognized by the controller which modifies model as required. It also briefly introduces the concept of multiple controllers modifying the same model.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;MVC dealt theoretically&amp;quot;====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
;*http://www.phpwact.org/pattern/model_view_controller&lt;br /&gt;
:This site provides a detailed overview of MVC pattern. It explains the different layers and relationship among them. It discusses the importance of structuring views, controllers and models.  It contains information about the benefits and drawbacks of MVC along with the irrelevant situations where MVC will not be helpful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;*http://msdn2.microsoft.com/en-us/library/ms978748.aspx&lt;br /&gt;
:This is the Microsoft's MSDN site, which poses the problem of &amp;quot;How do you modularize the user interface functionality of a Web application so that you can easily modify the individual parts?&amp;quot; and also provides the forces that act on the system given the situation. Having given a good description of the problem , the websites proceeds to give a concise description about how the MVC design pattern solves the problem posed. It also provides the user insight into variations of MVC that are available&lt;br /&gt;
&lt;br /&gt;
;*http://www.jdl.co.uk/briefings%5CMVC.pdf&lt;br /&gt;
This is a 6-page document on MVC. Though it does not provide a insight into the MVC as a design pattern, it does identify various aspects of it, which needs to be understood for understanding the pattern&lt;br /&gt;
&lt;br /&gt;
;*http://livedocs.adobe.com/flash/9.0/UsingFlash/help.html?content=WSd60f23110762d6b883b18f10cb1fe1af6-7b36.html&lt;br /&gt;
:It defines the MVC design pattern and explains the concept and how it helps simplifies the developer’s work and also improves the maintainability of the code&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;*http://articles.techrepublic.com.com/5100-22-1049862.html&lt;br /&gt;
:Articles in Tech Republic that explain in a lucid way the MVC pattern, where it is best used and couple of its disadvantages.&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;Implementation Specific&amp;quot; Websites ====&lt;br /&gt;
&lt;br /&gt;
The following sites illustrate the implementation of MVC in different programming languages like SmallTalk (MVC was originally created for this), Java, Ruby, ASP .NET etc.&lt;br /&gt;
&lt;br /&gt;
=====SmallTalk=====&lt;br /&gt;
;*[http://st-www.cs.uiuc.edu/users/smarch/st-docs/mvc.html MVC architecture First Proposal] &lt;br /&gt;
:This provides the paper by Steve Burbeck, who initially proposed the concept of MVC for Small Talk programming. It provides overview of how to use to MVC for application programming in Smalltalk. It discusses the communication within and between the 3 layers of MVC.  It contains information about existing view hierarchy. Some of the existing views are browsers inspectors and debuggers.&lt;br /&gt;
&lt;br /&gt;
=====Java=====&lt;br /&gt;
;*http://www.csis.pace.edu/~bergin/mvc/mvcgui.html&lt;br /&gt;
:This site gives a simple example of Temperature Control system implemented in java using the Observer and Observable ( these classes have been defined in java in order to implement the MVC architecture in Java)  .This site explains in a very instructional way of how to implement MVC in java.&lt;br /&gt;
&lt;br /&gt;
;*http://www.developer.com/java/ent/article.php/3336761&lt;br /&gt;
:This site highlights the importance of MVC patterns and its application in many GUI-based applications, client interfaces, and widget toolkits for manipulating and storing data for the end users. Java’s Swing toolkit is a perfect example. The site explains the implementation of MVC in swing. It provides a listing of all components in the model interface. There is a sample code that would help a user to see the functionality of all examples.&lt;br /&gt;
&lt;br /&gt;
;*http://java.sun.com/blueprints/patterns/MVC-detailed.html&lt;br /&gt;
:This SUN site poses a simple situation where the MVC design pattern can be applied and used to solve the problem using JSP’s to render the views, Servlets as controllers, EJB as models&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;*http://www.ifi.unizh.ch/richter/Classes/oose2/03_mvc/02_mvc_java/02_mvc_java.html#4%20Models%20as%20Proxies &lt;br /&gt;
:This site is an extension to earlier site and provides detailed explanation about the usage of MVC architecture in Java’s Swing. This site is for the advanced users who need to apply MVC in visual programming.&lt;br /&gt;
&lt;br /&gt;
;*[http://images.google.com/imgres?imgurl=http://publib.boulder.ibm.com/infocenter/wsadhelp/v5r1m2/topic/com.ibm.etools.struts.doc/images/cstrdoc018.gif&amp;amp;imgrefurl=http://publib.boulder.ibm.com/infocenter/wsadhelp/v5r1m2/topic/com.ibm.etools.struts.doc/topics/cstrdoc001.html&amp;amp;h=322&amp;amp;w=628&amp;amp;sz=30&amp;amp;hl=en&amp;amp;start=2&amp;amp;um=1&amp;amp;tbnid=tVyYlnDiTkYQbM:&amp;amp;tbnh=70&amp;amp;tbnw=137&amp;amp;prev=/images%3Fq%3DMVC%2B%2Bdesign%2Bpattern%26svnum%3D10%26um%3D1%26hl%3Den%26sa%3DX Google Image explaining MVC in Java]&lt;br /&gt;
:This provides pictorial representation of applications of MVC in Java. It contains images along with explanation for the MVC pattern used in Java explaining MVC and how is it integrated with JSP and struts in Java. &lt;br /&gt;
=====Ruby-On-Rails=====&lt;br /&gt;
;*[http://www.regdeveloper.co.uk/2006/07/17/ruby_rails_part2/ MVC example in Ruby on Rails]&lt;br /&gt;
:This is a very detailed instructional tutorial aimed at developing a MVC CRUD (Create, Read, Update, Delete) application in Ruby on Rails&lt;br /&gt;
&lt;br /&gt;
;*[http://blogs.ittoolbox.com/emergingtech/edge/archives/mvc-and-rails-12457 Blog on MVC in Ruby on Rails]&lt;br /&gt;
:This is a blog entry on MVC through the viewpoint of a Ruby on Rails developer defining MVC and giving minor details as to how MVC is implemented in Ruby on Rails.&lt;br /&gt;
&lt;br /&gt;
;*[http://wiki.rubyonrails.org/rails/pages/UnderstandingRailsMVC MVC in Rails explained in rubyonrails.org]&lt;br /&gt;
:This is an article on the Ruby on Rails official website defining the MVC usage in Rails along with links to articles within the same website for better understanding of MVC.&lt;br /&gt;
&lt;br /&gt;
;*[http://s3.amazonaws.com/sitepoint-books/ror.pdf Rails book dealing MVC architecture in Rails]&lt;br /&gt;
:This is a free download of pdf format of a book “Build your own Ruby on rails applications” by Patrick Lenz. This free pdf download expires by initial days of December//'2007//. This book provides a very wonderful development from the basics of Ruby to Ruby on Rails(RoR) and the MVC architecture explained and shown how it is embedded in RoR. This comes in conjunction with easy to learn illustrations&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
The sites mentioned above are very useful for several programmers such Java, PHP, Smalltalk programmers. It provides a background for new users who would like to implement design patterns hand in hand with software engineering techniques. &lt;br /&gt;
Most of the sites explain the MVC as a part of implementation of MVC in their specific software or application. Only a few sites actually deal with the concept illustrating it in a lucid way with simple instructional examples.&lt;/div&gt;</summary>
		<author><name>Schinni</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=Http:/pg.ece.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2007/wiki2_3_77&amp;diff=7940</id>
		<title>Http:/pg.ece.ncsu.edu/mediawiki/index.php/CSC/ECE 517 Fall 2007/wiki2 3 77</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Http:/pg.ece.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2007/wiki2_3_77&amp;diff=7940"/>
		<updated>2007-10-28T21:29:23Z</updated>

		<summary type="html">&lt;p&gt;Schinni: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Model/View/Controller Websites Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Topic ===&lt;br /&gt;
----&lt;br /&gt;
Model/view/controller. There are literally hundreds of pages describing MVC on the Web. If someone wants to learn about it, what should (s)he do? Look at the first few hits in Google? I expect we can do better than that. Write a review of the MVC sites on the Web. Which are best for learning about the concept? Which have the most instructive examples? Which are best for explaining how to use the pattern in Ruby and Java? If you choose this topic, you should be sure to peruse at least several dozen sites.&lt;br /&gt;
&lt;br /&gt;
=== Introduction to Model/View/Controller (MVC)===&lt;br /&gt;
----&lt;br /&gt;
This is an architectural pattern adopted in software engineering. Generally, complex computer applications deal with large amount of data in conjunction with the functionality accessing this data. This generally becomes difficult to handle. Hence the programmer prefers to separate the functionality and data (model) from the user interface (view). This technique is very useful since any changes made to user interface may not affect the functionality of the program and vice versa.  The data may be reorganized without making any changes in user interface. This is accomplished by decoupling data access from data presentation and user interface by the introduction of an intermediate component named controller.&lt;br /&gt;
&lt;br /&gt;
[[Image:Mvc1.JPG]]&lt;br /&gt;
The application is decoupled into three layers that would allow flexibility and reuse: &lt;br /&gt;
&lt;br /&gt;
'''Model:''' This is the domain-specific representation of information where the application operates. It knows about all the operations that can be used to transform this information. But it has no idea how these operations are invoked.&lt;br /&gt;
&lt;br /&gt;
'''Controller:''' This layer responds to the user (user inputs) which may invoke changes on the model. More specifically as mentioned by “Martin Fowler” in his book “Patterns of Enterprise Application Architecture” in a lucid way “Controller takes user input, manipulates the model and causes the view to update properly”&lt;br /&gt;
&lt;br /&gt;
'''View:''' This layer provides the user interface element. This is the user-visible view of the model where the information is presented in a domain-specific and user-friendly way.&lt;br /&gt;
&lt;br /&gt;
The MVC architectural pattern is very useful for the purpose of web development applications. One of the main purpose it serves is the separation of concerns. Hence, code is cleaner and easier to understand. The other advantage is reusability. The model can be enhanced in order to improve the functionality of the code with very minimal changes to the controller or view. &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Categories of Websites ===&lt;br /&gt;
&lt;br /&gt;
There are many sites available online about MVC which are very useful to a newbie. Certain websites provide proper pictorial representation and conceptual view of architectural pattern while some provide insight into the interaction between the different layers (i.e. model, controller and view). The websites can be categorized into two broad divisions, &amp;quot;Basic Concept&amp;quot;, &amp;quot;Implementation-Specific&amp;quot; and &amp;quot;Examples :&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;MVC Explained with an Example&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Any concept explained through an example is better understood than just theoretical description.Thus, while categorizing websites higher priority is given to those which explain MVC with an example.&lt;br /&gt;
&lt;br /&gt;
;*http://cristobal.baray.com/indiana/projects/mvc.html&lt;br /&gt;
:This site provides the perfect place for a novice of MVC to start. This was written in a conversational style and easy to understand. As we proceed with the blue arrows provided on the right bottom corner or the right-top corner, the  author slowly develops MVC concept and explains it through a very simple instructive example of &amp;quot;Heart-Beat&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
:Example: The heart-beat example consists of the interface as shown below .&lt;br /&gt;
[[Image:Heartbeat.JPG]]&lt;br /&gt;
&lt;br /&gt;
This particular example creates 2 separate Java windows for view and controller.After the details how this example is implemented, the author again explains the concept of MVC with respect to the example.&lt;br /&gt;
&lt;br /&gt;
[[Image:NOW.JPG]]&lt;br /&gt;
&lt;br /&gt;
;*http://www.adobe.com/devnet/flash/articles/mv_controller.html&lt;br /&gt;
:Starting off with a one line description of MVC and with a &amp;quot;Toggle button&amp;quot; example, this chapter &amp;quot;The Model-View-Controller Design Pattern&amp;quot; from the book &amp;quot;Essential ActionScript 2.0&amp;quot; provides a very instructive explaination of MVC design pattern.The responsibilities of the MVC are elaborated with a running example of a Clock. &lt;br /&gt;
 &lt;br /&gt;
[[Image:Adobe_MVC.gif]]&lt;br /&gt;
&lt;br /&gt;
:This site gives 2 examples, &amp;quot;Toggle&amp;quot; and &amp;quot;Clock&amp;quot;, second one being the running example across the excerpt.This example explains the responsibilities of each model,view. It also justifies the usage of MVC with the example which gives us a better insight into the MVC architecture as a whole.&lt;br /&gt;
&lt;br /&gt;
;*http://ist.berkeley.edu/as/ag/pub/pdf/mvc-seminar.pdf&lt;br /&gt;
:This provides a brief info on the history of design patterns and in particular MVC. The seminar proceeds to provide a brief introduction to MVC and then proceeds to its example of &amp;quot;Student_Information&amp;quot;.It then uses this example to explain in detail the concept of each of the Model, View and Controller. It also provides information about various technologies available for implementing MVC.&lt;br /&gt;
:This pdf provides a application Student_Information as an example of MVC. In this application, the view displays the info, the model stores the relevant information and the controller provides the relevant API's needed for receiving user_input and updating the model appropriately.&lt;br /&gt;
 &lt;br /&gt;
[[Image:Mvc_2.JPG|thumb|150px]]&lt;br /&gt;
;*http://www.enode.com/x/markup/tutorial/mvc.html&lt;br /&gt;
:This page, which is part of a tutorial, provides very basic definition of MVC and is accompanied by an instructive example  of a &amp;quot;Spinner&amp;quot;. &lt;br /&gt;
:This example explains how the data in the model is displayed by the view and how an &amp;quot;event action&amp;quot; is recognized by the controller which modifies model as required. It also briefly introduces the concept of multiple controllers modifying the same model.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== MVC dealt theoretically====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
;*http://www.phpwact.org/pattern/model_view_controller&lt;br /&gt;
:This site provides a detailed overview of MVC pattern. It explains the different layers and relationship among them. It discusses the importance of structuring views, controllers and models.  It contains information about the benefits and drawbacks of MVC along with the irrelevant situations where MVC will not be helpful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;*http://msdn2.microsoft.com/en-us/library/ms978748.aspx&lt;br /&gt;
:This is the Microsoft's MSDN site, which poses the problem of &amp;quot;How do you modularize the user interface functionality of a Web application so that you can easily modify the individual parts?&amp;quot; and also provides the forces that act on the system given the situation. Having given a good description of the problem , the websites proceeds to give a concise description about how the MVC design pattern solves the problem posed. It also provides the user insight into variations of MVC that are available&lt;br /&gt;
&lt;br /&gt;
;*http://www.jdl.co.uk/briefings%5CMVC.pdf&lt;br /&gt;
This is a 6-page document on MVC. Though it does not provide a insight into the MVC as a design pattern, it does identify various aspects of it, which needs to be understood for understanding the pattern&lt;br /&gt;
&lt;br /&gt;
;*http://livedocs.adobe.com/flash/9.0/UsingFlash/help.html?content=WSd60f23110762d6b883b18f10cb1fe1af6-7b36.html&lt;br /&gt;
:It defines the MVC design pattern and explains the concept and how it helps simplifies the developer’s work and also improves the maintainability of the code&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;*http://articles.techrepublic.com.com/5100-22-1049862.html&lt;br /&gt;
:Articles in Tech Republic that explain in a lucid way the MVC pattern, where it is best used and couple of its disadvantages.&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;Implementation Specific&amp;quot; Websites ====&lt;br /&gt;
&lt;br /&gt;
The following sites illustrate the implementation of MVC in different programming languages like SmallTalk (MVC was originally created for this), Java, Ruby, ASP .NET etc.&lt;br /&gt;
&lt;br /&gt;
=====SmallTalk=====&lt;br /&gt;
;*[http://st-www.cs.uiuc.edu/users/smarch/st-docs/mvc.html MVC architecture First Proposal] &lt;br /&gt;
:This provides the paper by Steve Burbeck, who initially proposed the concept of MVC for Small Talk programming. It provides overview of how to use to MVC for application programming in Smalltalk. It discusses the communication within and between the 3 layers of MVC.  It contains information about existing view hierarchy. Some of the existing views are browsers inspectors and debuggers.&lt;br /&gt;
&lt;br /&gt;
=====Java=====&lt;br /&gt;
;*http://www.csis.pace.edu/~bergin/mvc/mvcgui.html&lt;br /&gt;
:This site gives a simple example of Temperature Control system implemented in java using the Observer and Observable ( these classes have been defined in java in order to implement the MVC architecture in Java)  .This site explains in a very instructional way of how to implement MVC in java.&lt;br /&gt;
&lt;br /&gt;
;*http://www.developer.com/java/ent/article.php/3336761&lt;br /&gt;
:This site highlights the importance of MVC patterns and its application in many GUI-based applications, client interfaces, and widget toolkits for manipulating and storing data for the end users. Java’s Swing toolkit is a perfect example. The site explains the implementation of MVC in swing. It provides a listing of all components in the model interface. There is a sample code that would help a user to see the functionality of all examples.&lt;br /&gt;
&lt;br /&gt;
;*http://java.sun.com/blueprints/patterns/MVC-detailed.html&lt;br /&gt;
:This SUN site poses a simple situation where the MVC design pattern can be applied and used to solve the problem using JSP’s to render the views, Servlets as controllers, EJB as models&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;*http://www.ifi.unizh.ch/richter/Classes/oose2/03_mvc/02_mvc_java/02_mvc_java.html#4%20Models%20as%20Proxies &lt;br /&gt;
:This site is an extension to earlier site and provides detailed explanation about the usage of MVC architecture in Java’s Swing. This site is for the advanced users who need to apply MVC in visual programming.&lt;br /&gt;
&lt;br /&gt;
;*[http://images.google.com/imgres?imgurl=http://publib.boulder.ibm.com/infocenter/wsadhelp/v5r1m2/topic/com.ibm.etools.struts.doc/images/cstrdoc018.gif&amp;amp;imgrefurl=http://publib.boulder.ibm.com/infocenter/wsadhelp/v5r1m2/topic/com.ibm.etools.struts.doc/topics/cstrdoc001.html&amp;amp;h=322&amp;amp;w=628&amp;amp;sz=30&amp;amp;hl=en&amp;amp;start=2&amp;amp;um=1&amp;amp;tbnid=tVyYlnDiTkYQbM:&amp;amp;tbnh=70&amp;amp;tbnw=137&amp;amp;prev=/images%3Fq%3DMVC%2B%2Bdesign%2Bpattern%26svnum%3D10%26um%3D1%26hl%3Den%26sa%3DX Google Image explaining MVC in Java]&lt;br /&gt;
:This provides pictorial representation of applications of MVC in Java. It contains images along with explanation for the MVC pattern used in Java explaining MVC and how is it integrated with JSP and struts in Java. &lt;br /&gt;
=====Ruby-On-Rails=====&lt;br /&gt;
;*[http://www.regdeveloper.co.uk/2006/07/17/ruby_rails_part2/ MVC example in Ruby on Rails]&lt;br /&gt;
:This is a very detailed instructional tutorial aimed at developing a MVC CRUD (Create, Read, Update, Delete) application in Ruby on Rails&lt;br /&gt;
&lt;br /&gt;
;*[http://blogs.ittoolbox.com/emergingtech/edge/archives/mvc-and-rails-12457 Blog on MVC in Ruby on Rails]&lt;br /&gt;
:This is a blog entry on MVC through the viewpoint of a Ruby on Rails developer defining MVC and giving minor details as to how MVC is implemented in Ruby on Rails.&lt;br /&gt;
&lt;br /&gt;
;*[http://wiki.rubyonrails.org/rails/pages/UnderstandingRailsMVC MVC in Rails explained in rubyonrails.org]&lt;br /&gt;
:This is an article on the Ruby on Rails official website defining the MVC usage in Rails along with links to articles within the same website for better understanding of MVC.&lt;br /&gt;
&lt;br /&gt;
;*[http://s3.amazonaws.com/sitepoint-books/ror.pdf Rails book dealing MVC architecture in Rails]&lt;br /&gt;
:This is a free download of pdf format of a book “Build your own Ruby on rails applications” by Patrick Lenz. This free pdf download expires by initial days of December//'2007//. This book provides a very wonderful development from the basics of Ruby to Ruby on Rails(RoR) and the MVC architecture explained and shown how it is embedded in RoR. This comes in conjunction with easy to learn illustrations&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
The sites mentioned above are very useful for several programmers such Java, PHP, Smalltalk programmers. It provides a background for new users who would like to implement design patterns hand in hand with software engineering techniques. &lt;br /&gt;
Most of the sites explain the MVC as a part of implementation of MVC in their specific software or application. Only a few sites actually deal with the concept illustrating it in a lucid way with simple instructional examples.&lt;/div&gt;</summary>
		<author><name>Schinni</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=Http:/pg.ece.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2007/wiki2_3_77&amp;diff=7935</id>
		<title>Http:/pg.ece.ncsu.edu/mediawiki/index.php/CSC/ECE 517 Fall 2007/wiki2 3 77</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Http:/pg.ece.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2007/wiki2_3_77&amp;diff=7935"/>
		<updated>2007-10-28T21:17:25Z</updated>

		<summary type="html">&lt;p&gt;Schinni: /* MVC dealt theoretically */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Model/View/Controller Websites Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Topic ===&lt;br /&gt;
----&lt;br /&gt;
Model/view/controller. There are literally hundreds of pages describing MVC on the Web. If someone wants to learn about it, what should (s)he do? Look at the first few hits in Google? I expect we can do better than that. Write a review of the MVC sites on the Web. Which are best for learning about the concept? Which have the most instructive examples? Which are best for explaining how to use the pattern in Ruby and Java? If you choose this topic, you should be sure to peruse at least several dozen sites.&lt;br /&gt;
&lt;br /&gt;
=== Introduction to Model/View/Controller (MVC)===&lt;br /&gt;
----&lt;br /&gt;
This is an architectural pattern adopted in software engineering. Generally, complex computer applications deal with large amount of data in conjunction with the functionality accessing this data. This generally becomes difficult to handle. Hence the programmer prefers to separate the functionality and data (model) from the user interface (view). This technique is very useful since any changes made to user interface may not affect the functionality of the program and vice versa.  The data may be reorganized without making any changes in user interface. This is accomplished by decoupling data access from data presentation and user interface by the introduction of an intermediate component named controller.&lt;br /&gt;
&lt;br /&gt;
[[Image:Mvc1.JPG]]&lt;br /&gt;
The application is decoupled into three layers that would allow flexibility and reuse: &lt;br /&gt;
&lt;br /&gt;
'''Model:''' This is the domain-specific representation of information where the application operates. It knows about all the operations that can be used to transform this information. But it has no idea how these operations are invoked.&lt;br /&gt;
&lt;br /&gt;
'''Controller:''' This layer responds to the user (user inputs) which may invoke changes on the model. More specifically as mentioned by “Martin Fowler” in his book “Patterns of Enterprise Application Architecture” in a lucid way “Controller takes user input, manipulates the model and causes the view to update properly”&lt;br /&gt;
&lt;br /&gt;
'''View:''' This layer provides the user interface element. This is the user-visible view of the model where the information is presented in a domain-specific and user-friendly way.&lt;br /&gt;
&lt;br /&gt;
The MVC architectural pattern is very useful for the purpose of web development applications. One of the main purpose it serves is the separation of concerns. Hence, code is cleaner and easier to understand. The other advantage is reusability. The model can be enhanced in order to improve the functionality of the code with very minimal changes to the controller or view. &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Categories of Websites ===&lt;br /&gt;
&lt;br /&gt;
There are many sites available online about MVC which are very useful to a newbie. Certain websites provide proper pictorial representation and conceptual view of architectural pattern while some provide insight into the interaction between the different layers (i.e. model, controller and view). The websites can be categorized into two broad divisions, &amp;quot;Basic Concept&amp;quot;, &amp;quot;Implementation-Specific&amp;quot; and &amp;quot;Examples :&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;MVC Explained with an Example&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Any concept explained through an example is better understood than just theoretical description.Thus, while categorizing websites higher priority is given to those which explain MVC with an example.&lt;br /&gt;
&lt;br /&gt;
;*http://cristobal.baray.com/indiana/projects/mvc.html&lt;br /&gt;
:This site provides the perfect place for a novice of MVC to start. This was written in a conversational style and easy to understand. As we proceed with the blue arrows provided on the right bottom corner or the right-top corner, the  author slowly develops MVC concept and explains it through a very simple instructive example of &amp;quot;Heart-Beat&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
:Example: The heart-beat example consists of the interface as shown below .&lt;br /&gt;
[[Image:Heartbeat.JPG]]&lt;br /&gt;
&lt;br /&gt;
This particular example creates 2 separate Java windows for view and controller.After the details how this example is implemented, the author again explains the concept of MVC with respect to the example.&lt;br /&gt;
[[Image:NOW.JPG]]&lt;br /&gt;
&lt;br /&gt;
;*http://www.adobe.com/devnet/flash/articles/mv_controller.html&lt;br /&gt;
:Starting off with a one line description of MVC and with a &amp;quot;Toggle button&amp;quot; example, this chapter &amp;quot;The Model-View-Controller Design Pattern&amp;quot; from the book &amp;quot;Essential ActionScript 2.0&amp;quot; provides a very instructive explaination of MVC design pattern.The responsibilities of the MVC are elaborated with a running example of a Clock. &lt;br /&gt;
 &lt;br /&gt;
[[Image:Adobe_MVC.gif]]&lt;br /&gt;
&lt;br /&gt;
:This site gives 2 examples, &amp;quot;Toggle&amp;quot; and &amp;quot;Clock&amp;quot;, second one being the running example across the excerpt.This example explains the responsibilities of each model,view. It also justifies the usage of MVC with the example which gives us a better insight into the MVC architecture as a whole.&lt;br /&gt;
&lt;br /&gt;
;*http://ist.berkeley.edu/as/ag/pub/pdf/mvc-seminar.pdf&lt;br /&gt;
:This provides a brief info on the history of design patterns and in particular MVC. The seminar proceeds to provide a brief introduction to MVC and then proceeds to its example of &amp;quot;Student_Information&amp;quot;.It then uses this example to explain in detail the concept of each of the Model, View and Controller. It also provides information about various technologies available for implementing MVC.&lt;br /&gt;
:This pdf provides a application Student_Information as an example of MVC. In this application, the view displays the info, the model stores the relevant information and the controller provides the relevant API's needed for receiving user_input and updating the model appropriately.&lt;br /&gt;
 &lt;br /&gt;
[[Image:Mvc_2.JPG|thumb|150px]]&lt;br /&gt;
;*http://www.enode.com/x/markup/tutorial/mvc.html&lt;br /&gt;
:This page, which is part of a tutorial, provides very basic definition of MVC and is accompanied by an instructive example  of a &amp;quot;Spinner&amp;quot;. &lt;br /&gt;
:This example explains how the data in the model is displayed by the view and how an &amp;quot;event action&amp;quot; is recognized by the controller which modifies model as required. It also briefly introduces the concept of multiple controllers modifying the same model.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== MVC dealt theoretically====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
;*http://www.phpwact.org/pattern/model_view_controller&lt;br /&gt;
:This site provides a detailed overview of MVC pattern. It explains the different layers and relationship among them. It discusses the importance of structuring views, controllers and models.  It contains information about the benefits and drawbacks of MVC along with the irrelevant situations where MVC will not be helpful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;http://msdn2.microsoft.com/en-us/library/ms978748.aspx&lt;br /&gt;
:This is the Microsoft's MSDN site, which poses the problem of &amp;quot;How do you modularize the user interface functionality of a Web application so that you can easily modify the individual parts?&amp;quot; and also provides the forces that act on the system given the situation. Having given a good description of the problem , the websites proceeds to give a concise description about how the MVC design pattern solves the problem posed. It also provides the user insight into variations of MVC that are available&lt;br /&gt;
&lt;br /&gt;
;*http://livedocs.adobe.com/flash/9.0/UsingFlash/help.html?content=WSd60f23110762d6b883b18f10cb1fe1af6-7b36.html&lt;br /&gt;
:It defines the MVC design pattern and explains the concept and how it helps simplifies the developer’s work and also improves the maintainability of the code&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;*http://articles.techrepublic.com.com/5100-22-1049862.html&lt;br /&gt;
:Articles in Tech Republic that explain in a lucid way the MVC pattern, where it is best used and couple of its disadvantages.&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;Implementation Specific&amp;quot; Websites ====&lt;br /&gt;
&lt;br /&gt;
The following sites illustrate the implementation of MVC in different programming languages like SmallTalk (MVC was originally created for this), Java, Ruby, ASP .NET etc.&lt;br /&gt;
&lt;br /&gt;
=====SmallTalk=====&lt;br /&gt;
;*[http://st-www.cs.uiuc.edu/users/smarch/st-docs/mvc.html MVC architecture First Proposal] &lt;br /&gt;
:This provides the paper by Steve Burbeck, who initially proposed the concept of MVC for Small Talk programming. It provides overview of how to use to MVC for application programming in Smalltalk. It discusses the communication within and between the 3 layers of MVC.  It contains information about existing view hierarchy. Some of the existing views are browsers inspectors and debuggers.&lt;br /&gt;
&lt;br /&gt;
=====Java=====&lt;br /&gt;
;*http://www.csis.pace.edu/~bergin/mvc/mvcgui.html&lt;br /&gt;
:This site gives a simple example of Temperature Control system implemented in java using the Observer and Observable ( these classes have been defined in java in order to implement the MVC architecture in Java)  .This site explains in a very instructional way of how to implement MVC in java.&lt;br /&gt;
&lt;br /&gt;
;*http://www.developer.com/java/ent/article.php/3336761&lt;br /&gt;
:This site highlights the importance of MVC patterns and its application in many GUI-based applications, client interfaces, and widget toolkits for manipulating and storing data for the end users. Java’s Swing toolkit is a perfect example. The site explains the implementation of MVC in swing. It provides a listing of all components in the model interface. There is a sample code that would help a user to see the functionality of all examples.&lt;br /&gt;
&lt;br /&gt;
;*http://java.sun.com/blueprints/patterns/MVC-detailed.html&lt;br /&gt;
:This SUN site poses a simple situation where the MVC design pattern can be applied and used to solve the problem using JSP’s to render the views, Servlets as controllers, EJB as models&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;*http://www.ifi.unizh.ch/richter/Classes/oose2/03_mvc/02_mvc_java/02_mvc_java.html#4%20Models%20as%20Proxies &lt;br /&gt;
:This site is an extension to earlier site and provides detailed explanation about the usage of MVC architecture in Java’s Swing. This site is for the advanced users who need to apply MVC in visual programming.&lt;br /&gt;
&lt;br /&gt;
;*[http://images.google.com/imgres?imgurl=http://publib.boulder.ibm.com/infocenter/wsadhelp/v5r1m2/topic/com.ibm.etools.struts.doc/images/cstrdoc018.gif&amp;amp;imgrefurl=http://publib.boulder.ibm.com/infocenter/wsadhelp/v5r1m2/topic/com.ibm.etools.struts.doc/topics/cstrdoc001.html&amp;amp;h=322&amp;amp;w=628&amp;amp;sz=30&amp;amp;hl=en&amp;amp;start=2&amp;amp;um=1&amp;amp;tbnid=tVyYlnDiTkYQbM:&amp;amp;tbnh=70&amp;amp;tbnw=137&amp;amp;prev=/images%3Fq%3DMVC%2B%2Bdesign%2Bpattern%26svnum%3D10%26um%3D1%26hl%3Den%26sa%3DX Google Image explaining MVC in Java]&lt;br /&gt;
:This provides pictorial representation of applications of MVC in Java. It contains images along with explanation for the MVC pattern used in Java explaining MVC and how is it integrated with JSP and struts in Java. &lt;br /&gt;
=====Ruby-On-Rails=====&lt;br /&gt;
;*[http://www.regdeveloper.co.uk/2006/07/17/ruby_rails_part2/ MVC example in Ruby on Rails]&lt;br /&gt;
:This is a very detailed instructional tutorial aimed at developing a MVC CRUD (Create, Read, Update, Delete) application in Ruby on Rails&lt;br /&gt;
&lt;br /&gt;
;*[http://blogs.ittoolbox.com/emergingtech/edge/archives/mvc-and-rails-12457 Blog on MVC in Ruby on Rails]&lt;br /&gt;
:This is a blog entry on MVC through the viewpoint of a Ruby on Rails developer defining MVC and giving minor details as to how MVC is implemented in Ruby on Rails.&lt;br /&gt;
&lt;br /&gt;
;*[http://wiki.rubyonrails.org/rails/pages/UnderstandingRailsMVC MVC in Rails explained in rubyonrails.org]&lt;br /&gt;
:This is an article on the Ruby on Rails official website defining the MVC usage in Rails along with links to articles within the same website for better understanding of MVC.&lt;br /&gt;
&lt;br /&gt;
;*[http://s3.amazonaws.com/sitepoint-books/ror.pdf Rails book dealing MVC architecture in Rails]&lt;br /&gt;
:This is a free download of pdf format of a book “Build your own Ruby on rails applications” by Patrick Lenz. This free pdf download expires by initial days of December//'2007//. This book provides a very wonderful development from the basics of Ruby to Ruby on Rails(RoR) and the MVC architecture explained and shown how it is embedded in RoR. This comes in conjunction with easy to learn illustrations&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
The sites mentioned above are very useful for several programmers such Java, PHP, Smalltalk programmers. It provides a background for new users who would like to implement design patterns hand in hand with software engineering techniques. &lt;br /&gt;
Most of the sites explain the MVC as a part of implementation of MVC in their specific software or application. Only a few sites actually deal with the concept illustrating it in a lucid way with simple instructional examples.&lt;/div&gt;</summary>
		<author><name>Schinni</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=Http:/pg.ece.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2007/wiki2_3_77&amp;diff=7934</id>
		<title>Http:/pg.ece.ncsu.edu/mediawiki/index.php/CSC/ECE 517 Fall 2007/wiki2 3 77</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Http:/pg.ece.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2007/wiki2_3_77&amp;diff=7934"/>
		<updated>2007-10-28T21:01:01Z</updated>

		<summary type="html">&lt;p&gt;Schinni: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Model/View/Controller Websites Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Topic ===&lt;br /&gt;
----&lt;br /&gt;
Model/view/controller. There are literally hundreds of pages describing MVC on the Web. If someone wants to learn about it, what should (s)he do? Look at the first few hits in Google? I expect we can do better than that. Write a review of the MVC sites on the Web. Which are best for learning about the concept? Which have the most instructive examples? Which are best for explaining how to use the pattern in Ruby and Java? If you choose this topic, you should be sure to peruse at least several dozen sites.&lt;br /&gt;
&lt;br /&gt;
=== Introduction to Model/View/Controller (MVC)===&lt;br /&gt;
----&lt;br /&gt;
This is an architectural pattern adopted in software engineering. Generally, complex computer applications deal with large amount of data in conjunction with the functionality accessing this data. This generally becomes difficult to handle. Hence the programmer prefers to separate the functionality and data (model) from the user interface (view). This technique is very useful since any changes made to user interface may not affect the functionality of the program and vice versa.  The data may be reorganized without making any changes in user interface. This is accomplished by decoupling data access from data presentation and user interface by the introduction of an intermediate component named controller.&lt;br /&gt;
&lt;br /&gt;
[[Image:Mvc1.JPG]]&lt;br /&gt;
The application is decoupled into three layers that would allow flexibility and reuse: &lt;br /&gt;
&lt;br /&gt;
'''Model:''' This is the domain-specific representation of information where the application operates. It knows about all the operations that can be used to transform this information. But it has no idea how these operations are invoked.&lt;br /&gt;
&lt;br /&gt;
'''Controller:''' This layer responds to the user (user inputs) which may invoke changes on the model. More specifically as mentioned by “Martin Fowler” in his book “Patterns of Enterprise Application Architecture” in a lucid way “Controller takes user input, manipulates the model and causes the view to update properly”&lt;br /&gt;
&lt;br /&gt;
'''View:''' This layer provides the user interface element. This is the user-visible view of the model where the information is presented in a domain-specific and user-friendly way.&lt;br /&gt;
&lt;br /&gt;
The MVC architectural pattern is very useful for the purpose of web development applications. One of the main purpose it serves is the separation of concerns. Hence, code is cleaner and easier to understand. The other advantage is reusability. The model can be enhanced in order to improve the functionality of the code with very minimal changes to the controller or view. &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Categories of Websites ===&lt;br /&gt;
&lt;br /&gt;
There are many sites available online about MVC which are very useful to a newbie. Certain websites provide proper pictorial representation and conceptual view of architectural pattern while some provide insight into the interaction between the different layers (i.e. model, controller and view). The websites can be categorized into two broad divisions, &amp;quot;Basic Concept&amp;quot;, &amp;quot;Implementation-Specific&amp;quot; and &amp;quot;Examples :&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;MVC Explained with an Example&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Any concept explained through an example is better understood than just theoretical description.Thus, while categorizing websites higher priority is given to those which explain MVC with an example.&lt;br /&gt;
&lt;br /&gt;
;*http://cristobal.baray.com/indiana/projects/mvc.html&lt;br /&gt;
:This site provides the perfect place for a novice of MVC to start. This was written in a conversational style and easy to understand. As we proceed with the blue arrows provided on the right bottom corner or the right-top corner, the  author slowly develops MVC concept and explains it through a very simple instructive example of &amp;quot;Heart-Beat&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
:Example: The heart-beat example consists of the interface as shown below .&lt;br /&gt;
[[Image:Heartbeat.JPG]]&lt;br /&gt;
&lt;br /&gt;
This particular example creates 2 separate Java windows for view and controller.After the details how this example is implemented, the author again explains the concept of MVC with respect to the example.&lt;br /&gt;
[[Image:NOW.JPG]]&lt;br /&gt;
&lt;br /&gt;
;*http://www.adobe.com/devnet/flash/articles/mv_controller.html&lt;br /&gt;
:Starting off with a one line description of MVC and with a &amp;quot;Toggle button&amp;quot; example, this chapter &amp;quot;The Model-View-Controller Design Pattern&amp;quot; from the book &amp;quot;Essential ActionScript 2.0&amp;quot; provides a very instructive explaination of MVC design pattern.The responsibilities of the MVC are elaborated with a running example of a Clock. &lt;br /&gt;
 &lt;br /&gt;
[[Image:Adobe_MVC.gif]]&lt;br /&gt;
&lt;br /&gt;
:This site gives 2 examples, &amp;quot;Toggle&amp;quot; and &amp;quot;Clock&amp;quot;, second one being the running example across the excerpt.This example explains the responsibilities of each model,view. It also justifies the usage of MVC with the example which gives us a better insight into the MVC architecture as a whole.&lt;br /&gt;
&lt;br /&gt;
;*http://ist.berkeley.edu/as/ag/pub/pdf/mvc-seminar.pdf&lt;br /&gt;
:This provides a brief info on the history of design patterns and in particular MVC. The seminar proceeds to provide a brief introduction to MVC and then proceeds to its example of &amp;quot;Student_Information&amp;quot;.It then uses this example to explain in detail the concept of each of the Model, View and Controller. It also provides information about various technologies available for implementing MVC.&lt;br /&gt;
:This pdf provides a application Student_Information as an example of MVC. In this application, the view displays the info, the model stores the relevant information and the controller provides the relevant API's needed for receiving user_input and updating the model appropriately.&lt;br /&gt;
 &lt;br /&gt;
[[Image:Mvc_2.JPG|thumb|150px]]&lt;br /&gt;
;*http://www.enode.com/x/markup/tutorial/mvc.html&lt;br /&gt;
:This page, which is part of a tutorial, provides very basic definition of MVC and is accompanied by an instructive example  of a &amp;quot;Spinner&amp;quot;. &lt;br /&gt;
:This example explains how the data in the model is displayed by the view and how an &amp;quot;event action&amp;quot; is recognized by the controller which modifies model as required. It also briefly introduces the concept of multiple controllers modifying the same model.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== MVC dealt theoretically====&lt;br /&gt;
  &lt;br /&gt;
;*http://www.phpwact.org/pattern/model_view_controller&lt;br /&gt;
:This site provides a detailed overview of MVC pattern. It explains the different layers and relationship among them. It discusses the importance of structuring views, controllers and models.  It contains information about the benefits and drawbacks of MVC along with the irrelevant situations where MVC will not be helpful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;*http://livedocs.adobe.com/flash/9.0/UsingFlash/help.html?content=WSd60f23110762d6b883b18f10cb1fe1af6-7b36.html&lt;br /&gt;
:It defines the MVC design pattern and explains the concept and how it helps simplifies the developer’s work and also improves the maintainability of the code&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;*http://articles.techrepublic.com.com/5100-22-1049862.html&lt;br /&gt;
:Articles in Tech Republic that explain in a lucid way the MVC pattern, where it is best used and couple of its disadvantages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;*http://www.kvcindia.com/mvc.htm&lt;br /&gt;
:The site is important for understanding the basics of MVC architecture. It provides an explanation about the advantages of using MVC architecture. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;Implementation Specific&amp;quot; Websites ====&lt;br /&gt;
&lt;br /&gt;
The following sites illustrate the implementation of MVC in different programming languages like SmallTalk (MVC was originally created for this), Java, Ruby, ASP .NET etc.&lt;br /&gt;
&lt;br /&gt;
=====SmallTalk=====&lt;br /&gt;
;*[http://st-www.cs.uiuc.edu/users/smarch/st-docs/mvc.html MVC architecture First Proposal] &lt;br /&gt;
:This provides the paper by Steve Burbeck, who initially proposed the concept of MVC for Small Talk programming. It provides overview of how to use to MVC for application programming in Smalltalk. It discusses the communication within and between the 3 layers of MVC.  It contains information about existing view hierarchy. Some of the existing views are browsers inspectors and debuggers.&lt;br /&gt;
&lt;br /&gt;
=====Java=====&lt;br /&gt;
;*http://www.csis.pace.edu/~bergin/mvc/mvcgui.html&lt;br /&gt;
:This site gives a simple example of Temperature Control system implemented in java using the Observer and Observable ( these classes have been defined in java in order to implement the MVC architecture in Java)  .This site explains in a very instructional way of how to implement MVC in java.&lt;br /&gt;
&lt;br /&gt;
;*http://www.developer.com/java/ent/article.php/3336761&lt;br /&gt;
:This site highlights the importance of MVC patterns and its application in many GUI-based applications, client interfaces, and widget toolkits for manipulating and storing data for the end users. Java’s Swing toolkit is a perfect example. The site explains the implementation of MVC in swing. It provides a listing of all components in the model interface. There is a sample code that would help a user to see the functionality of all examples.&lt;br /&gt;
&lt;br /&gt;
;*http://java.sun.com/blueprints/patterns/MVC-detailed.html&lt;br /&gt;
:This SUN site poses a simple situation where the MVC design pattern can be applied and used to solve the problem using JSP’s to render the views, Servlets as controllers, EJB as models&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;*http://www.ifi.unizh.ch/richter/Classes/oose2/03_mvc/02_mvc_java/02_mvc_java.html#4%20Models%20as%20Proxies &lt;br /&gt;
:This site is an extension to earlier site and provides detailed explanation about the usage of MVC architecture in Java’s Swing. This site is for the advanced users who need to apply MVC in visual programming.&lt;br /&gt;
&lt;br /&gt;
;*[http://images.google.com/imgres?imgurl=http://publib.boulder.ibm.com/infocenter/wsadhelp/v5r1m2/topic/com.ibm.etools.struts.doc/images/cstrdoc018.gif&amp;amp;imgrefurl=http://publib.boulder.ibm.com/infocenter/wsadhelp/v5r1m2/topic/com.ibm.etools.struts.doc/topics/cstrdoc001.html&amp;amp;h=322&amp;amp;w=628&amp;amp;sz=30&amp;amp;hl=en&amp;amp;start=2&amp;amp;um=1&amp;amp;tbnid=tVyYlnDiTkYQbM:&amp;amp;tbnh=70&amp;amp;tbnw=137&amp;amp;prev=/images%3Fq%3DMVC%2B%2Bdesign%2Bpattern%26svnum%3D10%26um%3D1%26hl%3Den%26sa%3DX Google Image explaining MVC in Java]&lt;br /&gt;
:This provides pictorial representation of applications of MVC in Java. It contains images along with explanation for the MVC pattern used in Java explaining MVC and how is it integrated with JSP and struts in Java. &lt;br /&gt;
=====Ruby-On-Rails=====&lt;br /&gt;
;*[http://www.regdeveloper.co.uk/2006/07/17/ruby_rails_part2/ MVC example in Ruby on Rails]&lt;br /&gt;
:This is a very detailed instructional tutorial aimed at developing a MVC CRUD (Create, Read, Update, Delete) application in Ruby on Rails&lt;br /&gt;
&lt;br /&gt;
;*[http://blogs.ittoolbox.com/emergingtech/edge/archives/mvc-and-rails-12457 Blog on MVC in Ruby on Rails]&lt;br /&gt;
:This is a blog entry on MVC through the viewpoint of a Ruby on Rails developer defining MVC and giving minor details as to how MVC is implemented in Ruby on Rails.&lt;br /&gt;
&lt;br /&gt;
;*[http://wiki.rubyonrails.org/rails/pages/UnderstandingRailsMVC MVC in Rails explained in rubyonrails.org]&lt;br /&gt;
:This is an article on the Ruby on Rails official website defining the MVC usage in Rails along with links to articles within the same website for better understanding of MVC.&lt;br /&gt;
&lt;br /&gt;
;*[http://s3.amazonaws.com/sitepoint-books/ror.pdf Rails book dealing MVC architecture in Rails]&lt;br /&gt;
:This is a free download of pdf format of a book “Build your own Ruby on rails applications” by Patrick Lenz. This free pdf download expires by initial days of December//'2007//. This book provides a very wonderful development from the basics of Ruby to Ruby on Rails(RoR) and the MVC architecture explained and shown how it is embedded in RoR. This comes in conjunction with easy to learn illustrations&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
The sites mentioned above are very useful for several programmers such Java, PHP, Smalltalk programmers. It provides a background for new users who would like to implement design patterns hand in hand with software engineering techniques. &lt;br /&gt;
Most of the sites explain the MVC as a part of implementation of MVC in their specific software or application. Only a few sites actually deal with the concept illustrating it in a lucid way with simple instructional examples.&lt;/div&gt;</summary>
		<author><name>Schinni</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=Http:/pg.ece.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2007/wiki2_3_77&amp;diff=7931</id>
		<title>Http:/pg.ece.ncsu.edu/mediawiki/index.php/CSC/ECE 517 Fall 2007/wiki2 3 77</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Http:/pg.ece.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2007/wiki2_3_77&amp;diff=7931"/>
		<updated>2007-10-28T20:53:12Z</updated>

		<summary type="html">&lt;p&gt;Schinni: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Model/View/Controller Websites Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Topic ===&lt;br /&gt;
----&lt;br /&gt;
Model/view/controller. There are literally hundreds of pages describing MVC on the Web. If someone wants to learn about it, what should (s)he do? Look at the first few hits in Google? I expect we can do better than that. Write a review of the MVC sites on the Web. Which are best for learning about the concept? Which have the most instructive examples? Which are best for explaining how to use the pattern in Ruby and Java? If you choose this topic, you should be sure to peruse at least several dozen sites.&lt;br /&gt;
&lt;br /&gt;
=== Introduction to Model/View/Controller (MVC)===&lt;br /&gt;
----&lt;br /&gt;
This is an architectural pattern adopted in software engineering. Generally, complex computer applications deal with large amount of data in conjunction with the functionality accessing this data. This generally becomes difficult to handle. Hence the programmer prefers to separate the functionality and data (model) from the user interface (view). This technique is very useful since any changes made to user interface may not affect the functionality of the program and vice versa.  The data may be reorganized without making any changes in user interface. This is accomplished by decoupling data access from data presentation and user interface by the introduction of an intermediate component named controller.&lt;br /&gt;
&lt;br /&gt;
[[Image:Mvc1.JPG]]&lt;br /&gt;
The application is decoupled into three layers that would allow flexibility and reuse: &lt;br /&gt;
&lt;br /&gt;
'''Model:''' This is the domain-specific representation of information where the application operates. It knows about all the operations that can be used to transform this information. But it has no idea how these operations are invoked.&lt;br /&gt;
&lt;br /&gt;
'''Controller:''' This layer responds to the user (user inputs) which may invoke changes on the model. More specifically as mentioned by “Martin Fowler” in his book “Patterns of Enterprise Application Architecture” in a lucid way “Controller takes user input, manipulates the model and causes the view to update properly”&lt;br /&gt;
&lt;br /&gt;
'''View:''' This layer provides the user interface element. This is the user-visible view of the model where the information is presented in a domain-specific and user-friendly way.&lt;br /&gt;
&lt;br /&gt;
The MVC architectural pattern is very useful for the purpose of web development applications. One of the main purpose it serves is the separation of concerns. Hence, code is cleaner and easier to understand. The other advantage is reusability. The model can be enhanced in order to improve the functionality of the code with very minimal changes to the controller or view. &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Categories of Websites ===&lt;br /&gt;
&lt;br /&gt;
There are many sites available online about MVC which are very useful to a newbie. Certain websites provide proper pictorial representation and conceptual view of architectural pattern while some provide insight into the interaction between the different layers (i.e. model, controller and view). The websites can be categorized into two broad divisions, &amp;quot;Basic Concept&amp;quot;, &amp;quot;Implementation-Specific&amp;quot; and &amp;quot;Examples :&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;Basic Concept&amp;quot; Websites====&lt;br /&gt;
&lt;br /&gt;
Websites dealing with the concept of MVC as a design pattern :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;MVC Explained with an Example&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Any concept explained through an example is better understood than just theoretical description.Thus, while categorizing websites higher priority is given to those which explain MVC with an example.&lt;br /&gt;
&lt;br /&gt;
;*http://cristobal.baray.com/indiana/projects/mvc.html&lt;br /&gt;
:This site provides the perfect place for a novice of MVC to start. This was written in a conversational style and easy to understand. As we proceed with the blue arrows provided on the right bottom corner or the right-top corner, the  author slowly develops MVC concept and explains it through a very simple instructive example of &amp;quot;Heart-Beat&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
:Example: The heart-beat example consists of the interface as shown below .&lt;br /&gt;
[[Image:Heartbeat.JPG]]&lt;br /&gt;
&lt;br /&gt;
This particular example creates 2 separate Java windows for view and controller.After the details how this example is implemented, the author again explains the concept of MVC with respect to the example.&lt;br /&gt;
[[Image:NOW.JPG]]&lt;br /&gt;
&lt;br /&gt;
;*[http://www.adobe.com/devnet/flash/articles/mv_controller.html MVC throughly dealt]&lt;br /&gt;
:Starting off with a one line description of MVC and with a &amp;quot;Toggle button&amp;quot; example, this chapter &amp;quot;The Model-View-Controller Design Pattern&amp;quot; from the book &amp;quot;Essential ActionScript 2.0&amp;quot; provides a very instructive explaination of MVC design pattern.The responsibilities of the MVC are elaborated with a running example of a Clock. &lt;br /&gt;
 &lt;br /&gt;
[[Image:Adobe_MVC.gif]]&lt;br /&gt;
&lt;br /&gt;
 This site gives 2 examples, &amp;quot;Toggle&amp;quot; and &amp;quot;Clock&amp;quot;, second one being the running example across the excerpt.This example explains the responsibilities of each model,view. It also justifies the usage of MVC with the example which gives us a better insight into the MVC architecture as a whole.&lt;br /&gt;
&lt;br /&gt;
;*http://ist.berkeley.edu/as/ag/pub/pdf/mvc-seminar.pdf Seminar pdf on MVC&lt;br /&gt;
:This provides a brief info on the history of design patterns and in particular MVC. The seminar proceeds to provide a brief introduction to MVC and then proceeds to its example of &amp;quot;Student_Information&amp;quot;.It then uses this example to explain in detail the concept of each of the Model, View and Controller. It also provides information about various technologies available for implementing MVC.&lt;br /&gt;
:This pdf provides a application Student_Information as an example of MVC. In this application, the view displays the info, the model stores the relevant information and the controller provides the relevant API's needed for receiving user_input and updating the model appropriately.&lt;br /&gt;
 &lt;br /&gt;
[[Image:Mvc_2.JPG|thumb|150px]]&lt;br /&gt;
;*http://www.enode.com/x/markup/tutorial/mvc.html&lt;br /&gt;
:This page, which is part of a tutorial, provides very basic definition of MVC and is accompanied by an instructive example  of a &amp;quot;Spinner&amp;quot;. &lt;br /&gt;
:This example explains how the data in the model is displayed by the view and how an &amp;quot;event action&amp;quot; is recognized by the controller which modifies model as required. It also briefly introduces the concept of multiple controllers modifying the same model.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
;*[http://www.phpwact.org/pattern/model_view_controller MVC overview]&lt;br /&gt;
:This site provides a detailed overview of MVC pattern. It explains the different layers and relationship among them. It discusses the importance of structuring views, controllers and models.  It contains information about the benefits and drawbacks of MVC along with the irrelevant situations where MVC will not be helpful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;*[http://articles.techrepublic.com.com/5100-22-1049862.html Tech Republic Article on MVC]&lt;br /&gt;
:Articles in Tech Republic that explain in a lucid way the MVC pattern, where it is best used and couple of its disadvantages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;*[http://www.kvcindia.com/mvc.htm Another MVC overview]&lt;br /&gt;
:The site is important for understanding the basics of MVC architecture. It provides an explanation about the advantages of using MVC architecture. &lt;br /&gt;
&lt;br /&gt;
;*[http://livedocs.adobe.com/flash/9.0/UsingFlash/help.html?content=WSd60f23110762d6b883b18f10cb1fe1af6-7b36.html MVC defined]&lt;br /&gt;
:It defines the MVC design pattern and explains the concept and how it helps simplifies the developer’s work and also improves the maintainability of the code&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;Implementation Specific&amp;quot; Websites ====&lt;br /&gt;
The following sites illustrate the implementation of MVC in different programming languages like SmallTalk (MVC was originally created for this), Java, Ruby, ASP .NET etc.&lt;br /&gt;
&lt;br /&gt;
;*[http://st-www.cs.uiuc.edu/users/smarch/st-docs/mvc.html MVC architecture First Proposal] &lt;br /&gt;
:This provides the paper by Steve Burbeck, who initially proposed the concept of MVC for Small Talk programming. It provides overview of how to use to MVC for application programming in Smalltalk. It discusses the communication within and between the 3 layers of MVC.  It contains information about existing view hierarchy. Some of the existing views are browsers inspectors and debuggers.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.csis.pace.edu/~bergin/mvc/mvcgui.html MVC implemented in Java]&lt;br /&gt;
:This site gives a simple example of Temperature Control system implemented in java using the Observer and Observable ( these classes have been defined in java in order to implement the MVC architecture in Java)  .This site explains in a very instructional way of how to implement MVC in java.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.developer.com/java/ent/article.php/3336761 MVC in Java GUI applications]&lt;br /&gt;
:This site highlights the importance of MVC patterns and its application in many GUI-based applications, client interfaces, and widget toolkits for manipulating and storing data for the end users. Java’s Swing toolkit is a perfect example. The site explains the implementation of MVC in swing. It provides a listing of all components in the model interface. There is a sample code that would help a user to see the functionality of all examples.&lt;br /&gt;
&lt;br /&gt;
;*[http://java.sun.com/blueprints/patterns/MVC-detailed.html Sun description of MVC]&lt;br /&gt;
:This poses a simple situation where the MVC design pattern can be applied and used to solve the problem using JSP’s to render the views, Servlets as controllers, EJB as models&lt;br /&gt;
&lt;br /&gt;
;*[http://www.regdeveloper.co.uk/2006/07/17/ruby_rails_part2/ MVC example in Ruby on Rails]&lt;br /&gt;
:This is a very detailed instructional tutorial aimed at developing a MVC CRUD (Create, Read, Update, Delete) application in Ruby on Rails&lt;br /&gt;
&lt;br /&gt;
;*[http://blogs.ittoolbox.com/emergingtech/edge/archives/mvc-and-rails-12457 Blog on MVC in Ruby on Rails]&lt;br /&gt;
:This is a blog entry on MVC through the viewpoint of a Ruby on Rails developer defining MVC and giving minor details as to how MVC is implemented in Ruby on Rails.&lt;br /&gt;
&lt;br /&gt;
;*[http://wiki.rubyonrails.org/rails/pages/UnderstandingRailsMVC MVC in Rails explained in rubyonrails.org]&lt;br /&gt;
:This is an article on the Ruby on Rails official website defining the MVC usage in Rails along with links to articles within the same website for better understanding of MVC.&lt;br /&gt;
&lt;br /&gt;
;*[http://s3.amazonaws.com/sitepoint-books/ror.pdf Rails book dealing MVC architecture in Rails]&lt;br /&gt;
:This is a free download of pdf format of a book “Build your own Ruby on rails applications” by Patrick Lenz. This free pdf download expires by initial days of December//'2007//. This book provides a very wonderful development from the basics of Ruby to Ruby on Rails(RoR) and the MVC architecture explained and shown how it is embedded in RoR. This comes in conjunction with easy to learn illustrations&lt;br /&gt;
 &lt;br /&gt;
;*[http://www.15seconds.com/issue/060817.htm MVC in ASP .Net]&lt;br /&gt;
:The site provides a detailed but a simple overview of Model View Architecture with ASP.Net. It has pictorial representation of the MVC Framework. The picture will help the user to see the implementation of MVC and helps provide understanding of interactions present in MVC. Moreover there is an example of simple web site development to authenticate the user’s name and password by comparing the data with the database.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.tonymarston.net/php-mysql/infrastructure.html#mvc MVC in PHP]&lt;br /&gt;
:The website explains the application of MVC’s 3 Tier architecture for web development using PHP. It gives a comprehensive view of how to blend MVC architecture with Object oriented capabilities of PHP. It highlights the importance of reusability of code which is one of the most important advantages of MVC architecture.&lt;br /&gt;
&lt;br /&gt;
;*[http://msdn2.microsoft.com/en-us/library/ms978748.aspx MVC explained by MSDN]&lt;br /&gt;
:This site will help a new user to realize the importance of Model View Architecture. It mentions the problems faced by programmer who do not implement this 3 tier architecture and how the problems are resolved using MVC architecture. There is a section where they discussed about the testability which is greatly enhanced by employing this architecture. It also contains information about its benefits and liabilities.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.ifi.unizh.ch/richter/Classes/oose2/03_mvc/02_mvc_java/02_mvc_java.html#4%20Models%20as%20Proxies MVC architecture in Java Swing]&lt;br /&gt;
:This site is an extension to earlier site and provides detailed explanation about the usage of MVC architecture in Java’s Swing. This site is for the advanced users who need to apply MVC in visual programming.&lt;br /&gt;
&lt;br /&gt;
;*[http://images.google.com/imgres?imgurl=http://publib.boulder.ibm.com/infocenter/wsadhelp/v5r1m2/topic/com.ibm.etools.struts.doc/images/cstrdoc018.gif&amp;amp;imgrefurl=http://publib.boulder.ibm.com/infocenter/wsadhelp/v5r1m2/topic/com.ibm.etools.struts.doc/topics/cstrdoc001.html&amp;amp;h=322&amp;amp;w=628&amp;amp;sz=30&amp;amp;hl=en&amp;amp;start=2&amp;amp;um=1&amp;amp;tbnid=tVyYlnDiTkYQbM:&amp;amp;tbnh=70&amp;amp;tbnw=137&amp;amp;prev=/images%3Fq%3DMVC%2B%2Bdesign%2Bpattern%26svnum%3D10%26um%3D1%26hl%3Den%26sa%3DX Google Image explaining MVC in Java]&lt;br /&gt;
:This provides pictorial representation of applications of MVC in Java. It contains images along with explanation for the MVC pattern used in Java explaining MVC and how is it integrated with JSP and struts in Java. &lt;br /&gt;
&lt;br /&gt;
;*[http://www.codeproject.com/useritems/AJAX_MVC.asp?df=100&amp;amp;forumid=362797&amp;amp;exp=0&amp;amp;select=1797776 MVC in .NET and AJAX]&lt;br /&gt;
:This site discusses MVC usage in web based development particularly in .NET and AJAX framework. &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
The sites mentioned above are very useful for several programmers such Java, PHP, Smalltalk programmers. It provides a background for new users who would like to implement design patterns hand in hand with software engineering techniques. &lt;br /&gt;
Most of the sites explain the MVC as a part of implementation of MVC in their specific software or application. Only a few sites actually deal with the concept illustrating it in a lucid way with simple instructional examples.&lt;/div&gt;</summary>
		<author><name>Schinni</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:NOW.JPG&amp;diff=7929</id>
		<title>File:NOW.JPG</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:NOW.JPG&amp;diff=7929"/>
		<updated>2007-10-28T20:33:08Z</updated>

		<summary type="html">&lt;p&gt;Schinni: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Schinni</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:MVC7.JPG&amp;diff=7928</id>
		<title>File:MVC7.JPG</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:MVC7.JPG&amp;diff=7928"/>
		<updated>2007-10-28T20:31:47Z</updated>

		<summary type="html">&lt;p&gt;Schinni: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Schinni</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=Http:/pg.ece.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2007/wiki2_3_77&amp;diff=7927</id>
		<title>Http:/pg.ece.ncsu.edu/mediawiki/index.php/CSC/ECE 517 Fall 2007/wiki2 3 77</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Http:/pg.ece.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2007/wiki2_3_77&amp;diff=7927"/>
		<updated>2007-10-28T20:31:05Z</updated>

		<summary type="html">&lt;p&gt;Schinni: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Model/View/Controller Websites Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Topic ===&lt;br /&gt;
----&lt;br /&gt;
Model/view/controller. There are literally hundreds of pages describing MVC on the Web. If someone wants to learn about it, what should (s)he do? Look at the first few hits in Google? I expect we can do better than that. Write a review of the MVC sites on the Web. Which are best for learning about the concept? Which have the most instructive examples? Which are best for explaining how to use the pattern in Ruby and Java? If you choose this topic, you should be sure to peruse at least several dozen sites.&lt;br /&gt;
&lt;br /&gt;
=== Introduction to Model/View/Controller (MVC)===&lt;br /&gt;
----&lt;br /&gt;
This is an architectural pattern adopted in software engineering. Generally, complex computer applications deal with large amount of data in conjunction with the functionality accessing this data. This generally becomes difficult to handle. Hence the programmer prefers to separate the functionality and data (model) from the user interface (view). This technique is very useful since any changes made to user interface may not affect the functionality of the program and vice versa.  The data may be reorganized without making any changes in user interface. This is accomplished by decoupling data access from data presentation and user interface by the introduction of an intermediate component named controller.&lt;br /&gt;
&lt;br /&gt;
[[Image:Mvc1.JPG]]&lt;br /&gt;
The application is decoupled into three layers that would allow flexibility and reuse: &lt;br /&gt;
&lt;br /&gt;
'''Model:''' This is the domain-specific representation of information where the application operates. It knows about all the operations that can be used to transform this information. But it has no idea how these operations are invoked.&lt;br /&gt;
&lt;br /&gt;
'''Controller:''' This layer responds to the user (user inputs) which may invoke changes on the model. More specifically as mentioned by “Martin Fowler” in his book “Patterns of Enterprise Application Architecture” in a lucid way “Controller takes user input, manipulates the model and causes the view to update properly”&lt;br /&gt;
&lt;br /&gt;
'''View:''' This layer provides the user interface element. This is the user-visible view of the model where the information is presented in a domain-specific and user-friendly way.&lt;br /&gt;
&lt;br /&gt;
The MVC architectural pattern is very useful for the purpose of web development applications. One of the main purpose it serves is the separation of concerns. Hence, code is cleaner and easier to understand. The other advantage is reusability. The model can be enhanced in order to improve the functionality of the code with very minimal changes to the controller or view. &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Categories of Websites ===&lt;br /&gt;
&lt;br /&gt;
There are many sites available online about MVC which are very useful to a newbie. Certain websites provide proper pictorial representation and conceptual view of architectural pattern while some provide insight into the interaction between the different layers (i.e. model, controller and view). The websites can be categorized into two broad divisions, &amp;quot;Basic Concept&amp;quot;, &amp;quot;Implementation-Specific&amp;quot; and &amp;quot;Examples :&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;Basic Concept&amp;quot; Websites====&lt;br /&gt;
&lt;br /&gt;
Websites dealing with the concept of MVC as a design pattern :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;MVC Explained with an Example&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Any concept explained through an example is better understood than just theoretical description.Thus, while categorizing websites higher priority is given to those which explain MVC with an example.&lt;br /&gt;
&lt;br /&gt;
;*[http://cristobal.baray.com/indiana/projects/mvc.html]&lt;br /&gt;
:This site provides the perfect place for a novice of MVC to start. This was written in a conversational style and easy to understand. As we proceed with the blue arrows provided on the right bottom corner or the right-top corner, the  author slowly develops MVC concept and explains it through a very simple instructive example of &amp;quot;Heart-Beat&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
:Example: The heart-beat example consists of the interface as shown below .&lt;br /&gt;
[[Image:Heartbeat.JPG]]&lt;br /&gt;
This particular example creates 2 separate Java windows for view and controller.After the details how this example is implemented, the author again explains the concept of MVC with respect to the example.&lt;br /&gt;
[[Image:MVC_7.JPG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;*[http://www.enode.com/x/markup/tutorial/mvc.html Exemplary overview of MVC]&lt;br /&gt;
:Summary: This page, which is part of a tutorial, provides very basic definition of MVC and is accompanied by an instructive example  of a &amp;quot;Spinner&amp;quot;. &lt;br /&gt;
  Example:This example explains how the data in the model is displayed by the view and how an &amp;quot;event action&amp;quot; is recognized by the controller which modifies model as required. It also briefly introduces the concept of multiple controllers modifying the same model.&lt;br /&gt;
  Graphic:[[Mvc_2.JPG]]&lt;br /&gt;
 &lt;br /&gt;
;*[http://www.phpwact.org/pattern/model_view_controller MVC overview]&lt;br /&gt;
:This site provides a detailed overview of MVC pattern. It explains the different layers and relationship among them. It discusses the importance of structuring views, controllers and models.  It contains information about the benefits and drawbacks of MVC along with the irrelevant situations where MVC will not be helpful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;*[http://articles.techrepublic.com.com/5100-22-1049862.html Tech Republic Article on MVC]&lt;br /&gt;
:Articles in Tech Republic that explain in a lucid way the MVC pattern, where it is best used and couple of its disadvantages.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.adobe.com/devnet/flash/articles/mv_controller.html MVC throughly dealt]&lt;br /&gt;
:This site has a detailed description of the MVC and its abstract working explained in detail. Though it is actually a chapter from textbook referring rarely to previous chapters , it gives a very detailed( in fact most detailed description of MVC with simple examples along with advantages of each feature of the MVC design pattern.&lt;br /&gt;
[[Image:Adobe_MVC.gif]]&lt;br /&gt;
Example Description: Clock &lt;br /&gt;
&lt;br /&gt;
;*[http://www.kvcindia.com/mvc.htm Another MVC overview]&lt;br /&gt;
:The site is important for understanding the basics of MVC architecture. It provides an explanation about the advantages of using MVC architecture. &lt;br /&gt;
&lt;br /&gt;
;*[http://livedocs.adobe.com/flash/9.0/UsingFlash/help.html?content=WSd60f23110762d6b883b18f10cb1fe1af6-7b36.html MVC defined]&lt;br /&gt;
:It defines the MVC design pattern and explains the concept and how it helps simplifies the developer’s work and also improves the maintainability of the code&lt;br /&gt;
&lt;br /&gt;
;*[http://ist.berkeley.edu/as/ag/pub/pdf/mvc-seminar.pdf Seminar pdf on MVC]&lt;br /&gt;
:This the pdf of a MVC seminar used by UC Berkeley. Though not descriptive it gives a bird eye view of MVC operates along with a simple example.&lt;br /&gt;
&lt;br /&gt;
;*[http://en.wikipedia.org/wiki/Model-view-controller Wiki entry on MVC]&lt;br /&gt;
:This link is the Wiki entry for MVC providing its description and various links to MVC implementations in different programming languages.&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;Implementation Specific&amp;quot; Websites ====&lt;br /&gt;
The following sites illustrate the implementation of MVC in different programming languages like SmallTalk (MVC was originally created for this), Java, Ruby, ASP .NET etc.&lt;br /&gt;
&lt;br /&gt;
;*[http://st-www.cs.uiuc.edu/users/smarch/st-docs/mvc.html MVC architecture First Proposal] &lt;br /&gt;
:This provides the paper by Steve Burbeck, who initially proposed the concept of MVC for Small Talk programming. It provides overview of how to use to MVC for application programming in Smalltalk. It discusses the communication within and between the 3 layers of MVC.  It contains information about existing view hierarchy. Some of the existing views are browsers inspectors and debuggers.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.csis.pace.edu/~bergin/mvc/mvcgui.html MVC implemented in Java]&lt;br /&gt;
:This site gives a simple example of Temperature Control system implemented in java using the Observer and Observable ( these classes have been defined in java in order to implement the MVC architecture in Java)  .This site explains in a very instructional way of how to implement MVC in java.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.developer.com/java/ent/article.php/3336761 MVC in Java GUI applications]&lt;br /&gt;
:This site highlights the importance of MVC patterns and its application in many GUI-based applications, client interfaces, and widget toolkits for manipulating and storing data for the end users. Java’s Swing toolkit is a perfect example. The site explains the implementation of MVC in swing. It provides a listing of all components in the model interface. There is a sample code that would help a user to see the functionality of all examples.&lt;br /&gt;
&lt;br /&gt;
;*[http://java.sun.com/blueprints/patterns/MVC-detailed.html Sun description of MVC]&lt;br /&gt;
:This poses a simple situation where the MVC design pattern can be applied and used to solve the problem using JSP’s to render the views, Servlets as controllers, EJB as models&lt;br /&gt;
&lt;br /&gt;
;*[http://www.regdeveloper.co.uk/2006/07/17/ruby_rails_part2/ MVC example in Ruby on Rails]&lt;br /&gt;
:This is a very detailed instructional tutorial aimed at developing a MVC CRUD (Create, Read, Update, Delete) application in Ruby on Rails&lt;br /&gt;
&lt;br /&gt;
;*[http://blogs.ittoolbox.com/emergingtech/edge/archives/mvc-and-rails-12457 Blog on MVC in Ruby on Rails]&lt;br /&gt;
:This is a blog entry on MVC through the viewpoint of a Ruby on Rails developer defining MVC and giving minor details as to how MVC is implemented in Ruby on Rails.&lt;br /&gt;
&lt;br /&gt;
;*[http://wiki.rubyonrails.org/rails/pages/UnderstandingRailsMVC MVC in Rails explained in rubyonrails.org]&lt;br /&gt;
:This is an article on the Ruby on Rails official website defining the MVC usage in Rails along with links to articles within the same website for better understanding of MVC.&lt;br /&gt;
&lt;br /&gt;
;*[http://s3.amazonaws.com/sitepoint-books/ror.pdf Rails book dealing MVC architecture in Rails]&lt;br /&gt;
:This is a free download of pdf format of a book “Build your own Ruby on rails applications” by Patrick Lenz. This free pdf download expires by initial days of December//'2007//. This book provides a very wonderful development from the basics of Ruby to Ruby on Rails(RoR) and the MVC architecture explained and shown how it is embedded in RoR. This comes in conjunction with easy to learn illustrations&lt;br /&gt;
 &lt;br /&gt;
;*[http://www.15seconds.com/issue/060817.htm MVC in ASP .Net]&lt;br /&gt;
:The site provides a detailed but a simple overview of Model View Architecture with ASP.Net. It has pictorial representation of the MVC Framework. The picture will help the user to see the implementation of MVC and helps provide understanding of interactions present in MVC. Moreover there is an example of simple web site development to authenticate the user’s name and password by comparing the data with the database.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.tonymarston.net/php-mysql/infrastructure.html#mvc MVC in PHP]&lt;br /&gt;
:The website explains the application of MVC’s 3 Tier architecture for web development using PHP. It gives a comprehensive view of how to blend MVC architecture with Object oriented capabilities of PHP. It highlights the importance of reusability of code which is one of the most important advantages of MVC architecture.&lt;br /&gt;
&lt;br /&gt;
;*[http://msdn2.microsoft.com/en-us/library/ms978748.aspx MVC explained by MSDN]&lt;br /&gt;
:This site will help a new user to realize the importance of Model View Architecture. It mentions the problems faced by programmer who do not implement this 3 tier architecture and how the problems are resolved using MVC architecture. There is a section where they discussed about the testability which is greatly enhanced by employing this architecture. It also contains information about its benefits and liabilities.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.ifi.unizh.ch/richter/Classes/oose2/03_mvc/02_mvc_java/02_mvc_java.html#4%20Models%20as%20Proxies MVC architecture in Java Swing]&lt;br /&gt;
:This site is an extension to earlier site and provides detailed explanation about the usage of MVC architecture in Java’s Swing. This site is for the advanced users who need to apply MVC in visual programming.&lt;br /&gt;
&lt;br /&gt;
;*[http://images.google.com/imgres?imgurl=http://publib.boulder.ibm.com/infocenter/wsadhelp/v5r1m2/topic/com.ibm.etools.struts.doc/images/cstrdoc018.gif&amp;amp;imgrefurl=http://publib.boulder.ibm.com/infocenter/wsadhelp/v5r1m2/topic/com.ibm.etools.struts.doc/topics/cstrdoc001.html&amp;amp;h=322&amp;amp;w=628&amp;amp;sz=30&amp;amp;hl=en&amp;amp;start=2&amp;amp;um=1&amp;amp;tbnid=tVyYlnDiTkYQbM:&amp;amp;tbnh=70&amp;amp;tbnw=137&amp;amp;prev=/images%3Fq%3DMVC%2B%2Bdesign%2Bpattern%26svnum%3D10%26um%3D1%26hl%3Den%26sa%3DX Google Image explaining MVC in Java]&lt;br /&gt;
:This provides pictorial representation of applications of MVC in Java. It contains images along with explanation for the MVC pattern used in Java explaining MVC and how is it integrated with JSP and struts in Java. &lt;br /&gt;
&lt;br /&gt;
;*[http://www.codeproject.com/useritems/AJAX_MVC.asp?df=100&amp;amp;forumid=362797&amp;amp;exp=0&amp;amp;select=1797776 MVC in .NET and AJAX]&lt;br /&gt;
:This site discusses MVC usage in web based development particularly in .NET and AJAX framework. &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
The sites mentioned above are very useful for several programmers such Java, PHP, Smalltalk programmers. It provides a background for new users who would like to implement design patterns hand in hand with software engineering techniques. &lt;br /&gt;
Most of the sites explain the MVC as a part of implementation of MVC in their specific software or application. Only a few sites actually deal with the concept illustrating it in a lucid way with simple instructional examples.&lt;/div&gt;</summary>
		<author><name>Schinni</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=Http:/pg.ece.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2007/wiki2_3_77&amp;diff=7926</id>
		<title>Http:/pg.ece.ncsu.edu/mediawiki/index.php/CSC/ECE 517 Fall 2007/wiki2 3 77</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Http:/pg.ece.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2007/wiki2_3_77&amp;diff=7926"/>
		<updated>2007-10-28T20:28:13Z</updated>

		<summary type="html">&lt;p&gt;Schinni: /* &amp;quot;MVC Explained with an Example&amp;quot; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Model/View/Controller Websites Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Topic ===&lt;br /&gt;
----&lt;br /&gt;
Model/view/controller. There are literally hundreds of pages describing MVC on the Web. If someone wants to learn about it, what should (s)he do? Look at the first few hits in Google? I expect we can do better than that. Write a review of the MVC sites on the Web. Which are best for learning about the concept? Which have the most instructive examples? Which are best for explaining how to use the pattern in Ruby and Java? If you choose this topic, you should be sure to peruse at least several dozen sites.&lt;br /&gt;
&lt;br /&gt;
=== Introduction to Model/View/Controller (MVC)===&lt;br /&gt;
----&lt;br /&gt;
This is an architectural pattern adopted in software engineering. Generally, complex computer applications deal with large amount of data in conjunction with the functionality accessing this data. This generally becomes difficult to handle. Hence the programmer prefers to separate the functionality and data (model) from the user interface (view). This technique is very useful since any changes made to user interface may not affect the functionality of the program and vice versa.  The data may be reorganized without making any changes in user interface. This is accomplished by decoupling data access from data presentation and user interface by the introduction of an intermediate component named controller.&lt;br /&gt;
&lt;br /&gt;
[[Image:Mvc1.JPG]]&lt;br /&gt;
The application is decoupled into three layers that would allow flexibility and reuse: &lt;br /&gt;
&lt;br /&gt;
'''Model:''' This is the domain-specific representation of information where the application operates. It knows about all the operations that can be used to transform this information. But it has no idea how these operations are invoked.&lt;br /&gt;
&lt;br /&gt;
'''Controller:''' This layer responds to the user (user inputs) which may invoke changes on the model. More specifically as mentioned by “Martin Fowler” in his book “Patterns of Enterprise Application Architecture” in a lucid way “Controller takes user input, manipulates the model and causes the view to update properly”&lt;br /&gt;
&lt;br /&gt;
'''View:''' This layer provides the user interface element. This is the user-visible view of the model where the information is presented in a domain-specific and user-friendly way.&lt;br /&gt;
&lt;br /&gt;
The MVC architectural pattern is very useful for the purpose of web development applications. One of the main purpose it serves is the separation of concerns. Hence, code is cleaner and easier to understand. The other advantage is reusability. The model can be enhanced in order to improve the functionality of the code with very minimal changes to the controller or view. &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Categories of Websites ===&lt;br /&gt;
&lt;br /&gt;
There are many sites available online about MVC which are very useful to a newbie. Certain websites provide proper pictorial representation and conceptual view of architectural pattern while some provide insight into the interaction between the different layers (i.e. model, controller and view). The websites can be categorized into two broad divisions, &amp;quot;Basic Concept&amp;quot;, &amp;quot;Implementation-Specific&amp;quot; and &amp;quot;Examples :&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;Basic Concept&amp;quot; Websites====&lt;br /&gt;
&lt;br /&gt;
Websites dealing with the concept of MVC as a design pattern :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;MVC Explained with an Example&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Any concept explained through an example is better understood than just theoretical description.Thus, while categorizing websites higher priority is given to those which explain MVC with an example.&lt;br /&gt;
&lt;br /&gt;
;*[http://cristobal.baray.com/indiana/projects/mvc.html]&lt;br /&gt;
:Summary:This site provides the perfect place for a novice of MVC to start. This was written in a conversational style and easy to understand. As we proceed with the blue arrows provided on the right bottom corner or the right-top corner, the  author slowly develops MVc concept and explains it through a very simple instructive example of &amp;quot;Heart-Beat&amp;quot;.&lt;br /&gt;
Example: The heart-beat example consists of the interface as shown below .&lt;br /&gt;
[[Heartbeat.JPG]]&lt;br /&gt;
This particular example creates 2 separate Java windows for view and controller.After the details how this example is implemented, the author again explains the concept of MVC with respect to the example.&lt;br /&gt;
&lt;br /&gt;
Graphic:[[Image:MVC_7.JPG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;*[http://www.enode.com/x/markup/tutorial/mvc.html Exemplary overview of MVC]&lt;br /&gt;
:Summary: This page, which is part of a tutorial, provides very basic definition of MVC and is accompanied by an instructive example  of a &amp;quot;Spinner&amp;quot;. &lt;br /&gt;
  Example:This example explains how the data in the model is displayed by the view and how an &amp;quot;event action&amp;quot; is recognized by the controller which modifies model as required. It also briefly introduces the concept of multiple controllers modifying the same model.&lt;br /&gt;
  Graphic:[[Mvc_2.JPG]]&lt;br /&gt;
 &lt;br /&gt;
;*[http://www.phpwact.org/pattern/model_view_controller MVC overview]&lt;br /&gt;
:This site provides a detailed overview of MVC pattern. It explains the different layers and relationship among them. It discusses the importance of structuring views, controllers and models.  It contains information about the benefits and drawbacks of MVC along with the irrelevant situations where MVC will not be helpful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;*[http://articles.techrepublic.com.com/5100-22-1049862.html Tech Republic Article on MVC]&lt;br /&gt;
:Articles in Tech Republic that explain in a lucid way the MVC pattern, where it is best used and couple of its disadvantages.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.adobe.com/devnet/flash/articles/mv_controller.html MVC throughly dealt]&lt;br /&gt;
:This site has a detailed description of the MVC and its abstract working explained in detail. Though it is actually a chapter from textbook referring rarely to previous chapters , it gives a very detailed( in fact most detailed description of MVC with simple examples along with advantages of each feature of the MVC design pattern.&lt;br /&gt;
[[Image:Adobe_MVC.gif]]&lt;br /&gt;
Example Description: Clock &lt;br /&gt;
&lt;br /&gt;
;*[http://www.kvcindia.com/mvc.htm Another MVC overview]&lt;br /&gt;
:The site is important for understanding the basics of MVC architecture. It provides an explanation about the advantages of using MVC architecture. &lt;br /&gt;
&lt;br /&gt;
;*[http://livedocs.adobe.com/flash/9.0/UsingFlash/help.html?content=WSd60f23110762d6b883b18f10cb1fe1af6-7b36.html MVC defined]&lt;br /&gt;
:It defines the MVC design pattern and explains the concept and how it helps simplifies the developer’s work and also improves the maintainability of the code&lt;br /&gt;
&lt;br /&gt;
;*[http://ist.berkeley.edu/as/ag/pub/pdf/mvc-seminar.pdf Seminar pdf on MVC]&lt;br /&gt;
:This the pdf of a MVC seminar used by UC Berkeley. Though not descriptive it gives a bird eye view of MVC operates along with a simple example.&lt;br /&gt;
&lt;br /&gt;
;*[http://en.wikipedia.org/wiki/Model-view-controller Wiki entry on MVC]&lt;br /&gt;
:This link is the Wiki entry for MVC providing its description and various links to MVC implementations in different programming languages.&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;Implementation Specific&amp;quot; Websites ====&lt;br /&gt;
The following sites illustrate the implementation of MVC in different programming languages like SmallTalk (MVC was originally created for this), Java, Ruby, ASP .NET etc.&lt;br /&gt;
&lt;br /&gt;
;*[http://st-www.cs.uiuc.edu/users/smarch/st-docs/mvc.html MVC architecture First Proposal] &lt;br /&gt;
:This provides the paper by Steve Burbeck, who initially proposed the concept of MVC for Small Talk programming. It provides overview of how to use to MVC for application programming in Smalltalk. It discusses the communication within and between the 3 layers of MVC.  It contains information about existing view hierarchy. Some of the existing views are browsers inspectors and debuggers.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.csis.pace.edu/~bergin/mvc/mvcgui.html MVC implemented in Java]&lt;br /&gt;
:This site gives a simple example of Temperature Control system implemented in java using the Observer and Observable ( these classes have been defined in java in order to implement the MVC architecture in Java)  .This site explains in a very instructional way of how to implement MVC in java.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.developer.com/java/ent/article.php/3336761 MVC in Java GUI applications]&lt;br /&gt;
:This site highlights the importance of MVC patterns and its application in many GUI-based applications, client interfaces, and widget toolkits for manipulating and storing data for the end users. Java’s Swing toolkit is a perfect example. The site explains the implementation of MVC in swing. It provides a listing of all components in the model interface. There is a sample code that would help a user to see the functionality of all examples.&lt;br /&gt;
&lt;br /&gt;
;*[http://java.sun.com/blueprints/patterns/MVC-detailed.html Sun description of MVC]&lt;br /&gt;
:This poses a simple situation where the MVC design pattern can be applied and used to solve the problem using JSP’s to render the views, Servlets as controllers, EJB as models&lt;br /&gt;
&lt;br /&gt;
;*[http://www.regdeveloper.co.uk/2006/07/17/ruby_rails_part2/ MVC example in Ruby on Rails]&lt;br /&gt;
:This is a very detailed instructional tutorial aimed at developing a MVC CRUD (Create, Read, Update, Delete) application in Ruby on Rails&lt;br /&gt;
&lt;br /&gt;
;*[http://blogs.ittoolbox.com/emergingtech/edge/archives/mvc-and-rails-12457 Blog on MVC in Ruby on Rails]&lt;br /&gt;
:This is a blog entry on MVC through the viewpoint of a Ruby on Rails developer defining MVC and giving minor details as to how MVC is implemented in Ruby on Rails.&lt;br /&gt;
&lt;br /&gt;
;*[http://wiki.rubyonrails.org/rails/pages/UnderstandingRailsMVC MVC in Rails explained in rubyonrails.org]&lt;br /&gt;
:This is an article on the Ruby on Rails official website defining the MVC usage in Rails along with links to articles within the same website for better understanding of MVC.&lt;br /&gt;
&lt;br /&gt;
;*[http://s3.amazonaws.com/sitepoint-books/ror.pdf Rails book dealing MVC architecture in Rails]&lt;br /&gt;
:This is a free download of pdf format of a book “Build your own Ruby on rails applications” by Patrick Lenz. This free pdf download expires by initial days of December//'2007//. This book provides a very wonderful development from the basics of Ruby to Ruby on Rails(RoR) and the MVC architecture explained and shown how it is embedded in RoR. This comes in conjunction with easy to learn illustrations&lt;br /&gt;
 &lt;br /&gt;
;*[http://www.15seconds.com/issue/060817.htm MVC in ASP .Net]&lt;br /&gt;
:The site provides a detailed but a simple overview of Model View Architecture with ASP.Net. It has pictorial representation of the MVC Framework. The picture will help the user to see the implementation of MVC and helps provide understanding of interactions present in MVC. Moreover there is an example of simple web site development to authenticate the user’s name and password by comparing the data with the database.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.tonymarston.net/php-mysql/infrastructure.html#mvc MVC in PHP]&lt;br /&gt;
:The website explains the application of MVC’s 3 Tier architecture for web development using PHP. It gives a comprehensive view of how to blend MVC architecture with Object oriented capabilities of PHP. It highlights the importance of reusability of code which is one of the most important advantages of MVC architecture.&lt;br /&gt;
&lt;br /&gt;
;*[http://msdn2.microsoft.com/en-us/library/ms978748.aspx MVC explained by MSDN]&lt;br /&gt;
:This site will help a new user to realize the importance of Model View Architecture. It mentions the problems faced by programmer who do not implement this 3 tier architecture and how the problems are resolved using MVC architecture. There is a section where they discussed about the testability which is greatly enhanced by employing this architecture. It also contains information about its benefits and liabilities.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.ifi.unizh.ch/richter/Classes/oose2/03_mvc/02_mvc_java/02_mvc_java.html#4%20Models%20as%20Proxies MVC architecture in Java Swing]&lt;br /&gt;
:This site is an extension to earlier site and provides detailed explanation about the usage of MVC architecture in Java’s Swing. This site is for the advanced users who need to apply MVC in visual programming.&lt;br /&gt;
&lt;br /&gt;
;*[http://images.google.com/imgres?imgurl=http://publib.boulder.ibm.com/infocenter/wsadhelp/v5r1m2/topic/com.ibm.etools.struts.doc/images/cstrdoc018.gif&amp;amp;imgrefurl=http://publib.boulder.ibm.com/infocenter/wsadhelp/v5r1m2/topic/com.ibm.etools.struts.doc/topics/cstrdoc001.html&amp;amp;h=322&amp;amp;w=628&amp;amp;sz=30&amp;amp;hl=en&amp;amp;start=2&amp;amp;um=1&amp;amp;tbnid=tVyYlnDiTkYQbM:&amp;amp;tbnh=70&amp;amp;tbnw=137&amp;amp;prev=/images%3Fq%3DMVC%2B%2Bdesign%2Bpattern%26svnum%3D10%26um%3D1%26hl%3Den%26sa%3DX Google Image explaining MVC in Java]&lt;br /&gt;
:This provides pictorial representation of applications of MVC in Java. It contains images along with explanation for the MVC pattern used in Java explaining MVC and how is it integrated with JSP and struts in Java. &lt;br /&gt;
&lt;br /&gt;
;*[http://www.codeproject.com/useritems/AJAX_MVC.asp?df=100&amp;amp;forumid=362797&amp;amp;exp=0&amp;amp;select=1797776 MVC in .NET and AJAX]&lt;br /&gt;
:This site discusses MVC usage in web based development particularly in .NET and AJAX framework. &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
The sites mentioned above are very useful for several programmers such Java, PHP, Smalltalk programmers. It provides a background for new users who would like to implement design patterns hand in hand with software engineering techniques. &lt;br /&gt;
Most of the sites explain the MVC as a part of implementation of MVC in their specific software or application. Only a few sites actually deal with the concept illustrating it in a lucid way with simple instructional examples.&lt;/div&gt;</summary>
		<author><name>Schinni</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Heartbeat.JPG&amp;diff=7925</id>
		<title>File:Heartbeat.JPG</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Heartbeat.JPG&amp;diff=7925"/>
		<updated>2007-10-28T20:21:15Z</updated>

		<summary type="html">&lt;p&gt;Schinni: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Schinni</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=Http:/pg.ece.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2007/wiki2_3_77&amp;diff=7924</id>
		<title>Http:/pg.ece.ncsu.edu/mediawiki/index.php/CSC/ECE 517 Fall 2007/wiki2 3 77</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Http:/pg.ece.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2007/wiki2_3_77&amp;diff=7924"/>
		<updated>2007-10-28T20:16:59Z</updated>

		<summary type="html">&lt;p&gt;Schinni: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Model/View/Controller Websites Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Topic ===&lt;br /&gt;
----&lt;br /&gt;
Model/view/controller. There are literally hundreds of pages describing MVC on the Web. If someone wants to learn about it, what should (s)he do? Look at the first few hits in Google? I expect we can do better than that. Write a review of the MVC sites on the Web. Which are best for learning about the concept? Which have the most instructive examples? Which are best for explaining how to use the pattern in Ruby and Java? If you choose this topic, you should be sure to peruse at least several dozen sites.&lt;br /&gt;
&lt;br /&gt;
=== Introduction to Model/View/Controller (MVC)===&lt;br /&gt;
----&lt;br /&gt;
This is an architectural pattern adopted in software engineering. Generally, complex computer applications deal with large amount of data in conjunction with the functionality accessing this data. This generally becomes difficult to handle. Hence the programmer prefers to separate the functionality and data (model) from the user interface (view). This technique is very useful since any changes made to user interface may not affect the functionality of the program and vice versa.  The data may be reorganized without making any changes in user interface. This is accomplished by decoupling data access from data presentation and user interface by the introduction of an intermediate component named controller.&lt;br /&gt;
&lt;br /&gt;
[[Image:Mvc1.JPG]]&lt;br /&gt;
The application is decoupled into three layers that would allow flexibility and reuse: &lt;br /&gt;
&lt;br /&gt;
'''Model:''' This is the domain-specific representation of information where the application operates. It knows about all the operations that can be used to transform this information. But it has no idea how these operations are invoked.&lt;br /&gt;
&lt;br /&gt;
'''Controller:''' This layer responds to the user (user inputs) which may invoke changes on the model. More specifically as mentioned by “Martin Fowler” in his book “Patterns of Enterprise Application Architecture” in a lucid way “Controller takes user input, manipulates the model and causes the view to update properly”&lt;br /&gt;
&lt;br /&gt;
'''View:''' This layer provides the user interface element. This is the user-visible view of the model where the information is presented in a domain-specific and user-friendly way.&lt;br /&gt;
&lt;br /&gt;
The MVC architectural pattern is very useful for the purpose of web development applications. One of the main purpose it serves is the separation of concerns. Hence, code is cleaner and easier to understand. The other advantage is reusability. The model can be enhanced in order to improve the functionality of the code with very minimal changes to the controller or view. &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Categories of Websites ===&lt;br /&gt;
&lt;br /&gt;
There are many sites available online about MVC which are very useful to a newbie. Certain websites provide proper pictorial representation and conceptual view of architectural pattern while some provide insight into the interaction between the different layers (i.e. model, controller and view). The websites can be categorized into two broad divisions, &amp;quot;Basic Concept&amp;quot;, &amp;quot;Implementation-Specific&amp;quot; and &amp;quot;Examples :&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;Basic Concept&amp;quot; Websites====&lt;br /&gt;
&lt;br /&gt;
Websites dealing with the concept of MVC as a design pattern :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;MVC Explained with an Example&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Any concept explained through an example is better understood than just theoretical description.Thus, while categorizing websites higher priority is given to those which explain MVC with an example.&lt;br /&gt;
&lt;br /&gt;
;*[http://cristobal.baray.com/indiana/projects/mvc.html]&lt;br /&gt;
:Summary:This site provides the perfect place for a novice of MVC to start. This was written in a conversational style and easy to understand. As we proceed with the blue arrows provided on the right bottom corner or the right-top corner, the  author slowly develops MVc concept and explains it through a very simple instructive example of &amp;quot;Heart-Beat&amp;quot;.&lt;br /&gt;
Example: The heart-beat example consists of the interface as shown below &lt;br /&gt;
&lt;br /&gt;
Graphic:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;*[http://www.enode.com/x/markup/tutorial/mvc.html Exemplary overview of MVC]&lt;br /&gt;
:Summary: This page, which is part of a tutorial, provides very basic definition of MVC and is accompanied by an instructive example  of a &amp;quot;Spinner&amp;quot;. &lt;br /&gt;
  Example:This example explains how the data in the model is displayed by the view and how an &amp;quot;event action&amp;quot; is recognized by the controller which modifies model as required. It also briefly introduces the concept of multiple controllers modifying the same model.&lt;br /&gt;
  Graphic:[[Mvc_2.JPG]]&lt;br /&gt;
 &lt;br /&gt;
;*[http://www.phpwact.org/pattern/model_view_controller MVC overview]&lt;br /&gt;
:This site provides a detailed overview of MVC pattern. It explains the different layers and relationship among them. It discusses the importance of structuring views, controllers and models.  It contains information about the benefits and drawbacks of MVC along with the irrelevant situations where MVC will not be helpful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;*[http://articles.techrepublic.com.com/5100-22-1049862.html Tech Republic Article on MVC]&lt;br /&gt;
:Articles in Tech Republic that explain in a lucid way the MVC pattern, where it is best used and couple of its disadvantages.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.adobe.com/devnet/flash/articles/mv_controller.html MVC throughly dealt]&lt;br /&gt;
:This site has a detailed description of the MVC and its abstract working explained in detail. Though it is actually a chapter from textbook referring rarely to previous chapters , it gives a very detailed( in fact most detailed description of MVC with simple examples along with advantages of each feature of the MVC design pattern.&lt;br /&gt;
[[Image:Adobe_MVC.gif]]&lt;br /&gt;
Example Description: Clock &lt;br /&gt;
&lt;br /&gt;
;*[http://www.kvcindia.com/mvc.htm Another MVC overview]&lt;br /&gt;
:The site is important for understanding the basics of MVC architecture. It provides an explanation about the advantages of using MVC architecture. &lt;br /&gt;
&lt;br /&gt;
;*[http://livedocs.adobe.com/flash/9.0/UsingFlash/help.html?content=WSd60f23110762d6b883b18f10cb1fe1af6-7b36.html MVC defined]&lt;br /&gt;
:It defines the MVC design pattern and explains the concept and how it helps simplifies the developer’s work and also improves the maintainability of the code&lt;br /&gt;
&lt;br /&gt;
;*[http://ist.berkeley.edu/as/ag/pub/pdf/mvc-seminar.pdf Seminar pdf on MVC]&lt;br /&gt;
:This the pdf of a MVC seminar used by UC Berkeley. Though not descriptive it gives a bird eye view of MVC operates along with a simple example.&lt;br /&gt;
&lt;br /&gt;
;*[http://en.wikipedia.org/wiki/Model-view-controller Wiki entry on MVC]&lt;br /&gt;
:This link is the Wiki entry for MVC providing its description and various links to MVC implementations in different programming languages.&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;Implementation Specific&amp;quot; Websites ====&lt;br /&gt;
The following sites illustrate the implementation of MVC in different programming languages like SmallTalk (MVC was originally created for this), Java, Ruby, ASP .NET etc.&lt;br /&gt;
&lt;br /&gt;
;*[http://st-www.cs.uiuc.edu/users/smarch/st-docs/mvc.html MVC architecture First Proposal] &lt;br /&gt;
:This provides the paper by Steve Burbeck, who initially proposed the concept of MVC for Small Talk programming. It provides overview of how to use to MVC for application programming in Smalltalk. It discusses the communication within and between the 3 layers of MVC.  It contains information about existing view hierarchy. Some of the existing views are browsers inspectors and debuggers.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.csis.pace.edu/~bergin/mvc/mvcgui.html MVC implemented in Java]&lt;br /&gt;
:This site gives a simple example of Temperature Control system implemented in java using the Observer and Observable ( these classes have been defined in java in order to implement the MVC architecture in Java)  .This site explains in a very instructional way of how to implement MVC in java.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.developer.com/java/ent/article.php/3336761 MVC in Java GUI applications]&lt;br /&gt;
:This site highlights the importance of MVC patterns and its application in many GUI-based applications, client interfaces, and widget toolkits for manipulating and storing data for the end users. Java’s Swing toolkit is a perfect example. The site explains the implementation of MVC in swing. It provides a listing of all components in the model interface. There is a sample code that would help a user to see the functionality of all examples.&lt;br /&gt;
&lt;br /&gt;
;*[http://java.sun.com/blueprints/patterns/MVC-detailed.html Sun description of MVC]&lt;br /&gt;
:This poses a simple situation where the MVC design pattern can be applied and used to solve the problem using JSP’s to render the views, Servlets as controllers, EJB as models&lt;br /&gt;
&lt;br /&gt;
;*[http://www.regdeveloper.co.uk/2006/07/17/ruby_rails_part2/ MVC example in Ruby on Rails]&lt;br /&gt;
:This is a very detailed instructional tutorial aimed at developing a MVC CRUD (Create, Read, Update, Delete) application in Ruby on Rails&lt;br /&gt;
&lt;br /&gt;
;*[http://blogs.ittoolbox.com/emergingtech/edge/archives/mvc-and-rails-12457 Blog on MVC in Ruby on Rails]&lt;br /&gt;
:This is a blog entry on MVC through the viewpoint of a Ruby on Rails developer defining MVC and giving minor details as to how MVC is implemented in Ruby on Rails.&lt;br /&gt;
&lt;br /&gt;
;*[http://wiki.rubyonrails.org/rails/pages/UnderstandingRailsMVC MVC in Rails explained in rubyonrails.org]&lt;br /&gt;
:This is an article on the Ruby on Rails official website defining the MVC usage in Rails along with links to articles within the same website for better understanding of MVC.&lt;br /&gt;
&lt;br /&gt;
;*[http://s3.amazonaws.com/sitepoint-books/ror.pdf Rails book dealing MVC architecture in Rails]&lt;br /&gt;
:This is a free download of pdf format of a book “Build your own Ruby on rails applications” by Patrick Lenz. This free pdf download expires by initial days of December//'2007//. This book provides a very wonderful development from the basics of Ruby to Ruby on Rails(RoR) and the MVC architecture explained and shown how it is embedded in RoR. This comes in conjunction with easy to learn illustrations&lt;br /&gt;
 &lt;br /&gt;
;*[http://www.15seconds.com/issue/060817.htm MVC in ASP .Net]&lt;br /&gt;
:The site provides a detailed but a simple overview of Model View Architecture with ASP.Net. It has pictorial representation of the MVC Framework. The picture will help the user to see the implementation of MVC and helps provide understanding of interactions present in MVC. Moreover there is an example of simple web site development to authenticate the user’s name and password by comparing the data with the database.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.tonymarston.net/php-mysql/infrastructure.html#mvc MVC in PHP]&lt;br /&gt;
:The website explains the application of MVC’s 3 Tier architecture for web development using PHP. It gives a comprehensive view of how to blend MVC architecture with Object oriented capabilities of PHP. It highlights the importance of reusability of code which is one of the most important advantages of MVC architecture.&lt;br /&gt;
&lt;br /&gt;
;*[http://msdn2.microsoft.com/en-us/library/ms978748.aspx MVC explained by MSDN]&lt;br /&gt;
:This site will help a new user to realize the importance of Model View Architecture. It mentions the problems faced by programmer who do not implement this 3 tier architecture and how the problems are resolved using MVC architecture. There is a section where they discussed about the testability which is greatly enhanced by employing this architecture. It also contains information about its benefits and liabilities.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.ifi.unizh.ch/richter/Classes/oose2/03_mvc/02_mvc_java/02_mvc_java.html#4%20Models%20as%20Proxies MVC architecture in Java Swing]&lt;br /&gt;
:This site is an extension to earlier site and provides detailed explanation about the usage of MVC architecture in Java’s Swing. This site is for the advanced users who need to apply MVC in visual programming.&lt;br /&gt;
&lt;br /&gt;
;*[http://images.google.com/imgres?imgurl=http://publib.boulder.ibm.com/infocenter/wsadhelp/v5r1m2/topic/com.ibm.etools.struts.doc/images/cstrdoc018.gif&amp;amp;imgrefurl=http://publib.boulder.ibm.com/infocenter/wsadhelp/v5r1m2/topic/com.ibm.etools.struts.doc/topics/cstrdoc001.html&amp;amp;h=322&amp;amp;w=628&amp;amp;sz=30&amp;amp;hl=en&amp;amp;start=2&amp;amp;um=1&amp;amp;tbnid=tVyYlnDiTkYQbM:&amp;amp;tbnh=70&amp;amp;tbnw=137&amp;amp;prev=/images%3Fq%3DMVC%2B%2Bdesign%2Bpattern%26svnum%3D10%26um%3D1%26hl%3Den%26sa%3DX Google Image explaining MVC in Java]&lt;br /&gt;
:This provides pictorial representation of applications of MVC in Java. It contains images along with explanation for the MVC pattern used in Java explaining MVC and how is it integrated with JSP and struts in Java. &lt;br /&gt;
&lt;br /&gt;
;*[http://www.codeproject.com/useritems/AJAX_MVC.asp?df=100&amp;amp;forumid=362797&amp;amp;exp=0&amp;amp;select=1797776 MVC in .NET and AJAX]&lt;br /&gt;
:This site discusses MVC usage in web based development particularly in .NET and AJAX framework. &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
The sites mentioned above are very useful for several programmers such Java, PHP, Smalltalk programmers. It provides a background for new users who would like to implement design patterns hand in hand with software engineering techniques. &lt;br /&gt;
Most of the sites explain the MVC as a part of implementation of MVC in their specific software or application. Only a few sites actually deal with the concept illustrating it in a lucid way with simple instructional examples.&lt;/div&gt;</summary>
		<author><name>Schinni</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Mvc_2.JPG&amp;diff=7923</id>
		<title>File:Mvc 2.JPG</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Mvc_2.JPG&amp;diff=7923"/>
		<updated>2007-10-28T20:12:16Z</updated>

		<summary type="html">&lt;p&gt;Schinni: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Schinni</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=Http:/pg.ece.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2007/wiki2_3_77&amp;diff=7922</id>
		<title>Http:/pg.ece.ncsu.edu/mediawiki/index.php/CSC/ECE 517 Fall 2007/wiki2 3 77</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Http:/pg.ece.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2007/wiki2_3_77&amp;diff=7922"/>
		<updated>2007-10-28T19:44:56Z</updated>

		<summary type="html">&lt;p&gt;Schinni: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Model/View/Controller Websites Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Topic ===&lt;br /&gt;
----&lt;br /&gt;
Model/view/controller. There are literally hundreds of pages describing MVC on the Web. If someone wants to learn about it, what should (s)he do? Look at the first few hits in Google? I expect we can do better than that. Write a review of the MVC sites on the Web. Which are best for learning about the concept? Which have the most instructive examples? Which are best for explaining how to use the pattern in Ruby and Java? If you choose this topic, you should be sure to peruse at least several dozen sites.&lt;br /&gt;
&lt;br /&gt;
=== Introduction to Model/View/Controller (MVC)===&lt;br /&gt;
----&lt;br /&gt;
This is an architectural pattern adopted in software engineering. Generally, complex computer applications deal with large amount of data in conjunction with the functionality accessing this data. This generally becomes difficult to handle. Hence the programmer prefers to separate the functionality and data (model) from the user interface (view). This technique is very useful since any changes made to user interface may not affect the functionality of the program and vice versa.  The data may be reorganized without making any changes in user interface. This is accomplished by decoupling data access from data presentation and user interface by the introduction of an intermediate component named controller.&lt;br /&gt;
&lt;br /&gt;
[[Image:Mvc1.JPG]]&lt;br /&gt;
The application is decoupled into three layers that would allow flexibility and reuse: &lt;br /&gt;
&lt;br /&gt;
'''Model:''' This is the domain-specific representation of information where the application operates. It knows about all the operations that can be used to transform this information. But it has no idea how these operations are invoked.&lt;br /&gt;
&lt;br /&gt;
'''Controller:''' This layer responds to the user (user inputs) which may invoke changes on the model. More specifically as mentioned by “Martin Fowler” in his book “Patterns of Enterprise Application Architecture” in a lucid way “Controller takes user input, manipulates the model and causes the view to update properly”&lt;br /&gt;
&lt;br /&gt;
'''View:''' This layer provides the user interface element. This is the user-visible view of the model where the information is presented in a domain-specific and user-friendly way.&lt;br /&gt;
&lt;br /&gt;
The MVC architectural pattern is very useful for the purpose of web development applications. One of the main purpose it serves is the separation of concerns. Hence, code is cleaner and easier to understand. The other advantage is reusability. The model can be enhanced in order to improve the functionality of the code with very minimal changes to the controller or view. &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Categories of Websites ===&lt;br /&gt;
&lt;br /&gt;
There are many sites available online about MVC which are very useful to a newbie. Certain websites provide proper pictorial representation and conceptual view of architectural pattern while some provide insight into the interaction between the different layers (i.e. model, controller and view). The websites can be categorized into two broad divisions, &amp;quot;Basic Concept&amp;quot;, &amp;quot;Implementation-Specific&amp;quot; and &amp;quot;Examples :&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;Basic Concept&amp;quot; Websites====&lt;br /&gt;
&lt;br /&gt;
Websites dealing with the concept of MVC as a design pattern :&lt;br /&gt;
&lt;br /&gt;
;*[http://www.phpwact.org/pattern/model_view_controller MVC overview]&lt;br /&gt;
:This site provides a detailed overview of MVC pattern. It explains the different layers and relationship among them. It discusses the importance of structuring views, controllers and models.  It contains information about the benefits and drawbacks of MVC along with the irrelevant situations where MVC will not be helpful.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.enode.com/x/markup/tutorial/mvc.html Exemplary overview of MVC]&lt;br /&gt;
:This site is perfect for the new users who want to have a clear idea of the MVC architecture. They have explained it by taking an example of spinner component that consists of text box and 2 buttons which can be used to increase or decrease the value is the text box.&lt;br /&gt;
&lt;br /&gt;
;*[http://articles.techrepublic.com.com/5100-22-1049862.html Tech Republic Article on MVC]&lt;br /&gt;
:Articles in Tech Republic that explain in a lucid way the MVC pattern, where it is best used and couple of its disadvantages.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.adobe.com/devnet/flash/articles/mv_controller.html MVC throughly dealt]&lt;br /&gt;
:This site has a detailed description of the MVC and its abstract working explained in detail. Though it is actually a chapter from textbook referring rarely to previous chapters , it gives a very detailed( in fact most detailed description of MVC with simple examples along with advantages of each feature of the MVC design pattern.&lt;br /&gt;
[[Image:Adobe_MVC.gif]]&lt;br /&gt;
Example Description: Clock &lt;br /&gt;
&lt;br /&gt;
;*[http://www.kvcindia.com/mvc.htm Another MVC overview]&lt;br /&gt;
:The site is important for understanding the basics of MVC architecture. It provides an explanation about the advantages of using MVC architecture. &lt;br /&gt;
&lt;br /&gt;
;*[http://livedocs.adobe.com/flash/9.0/UsingFlash/help.html?content=WSd60f23110762d6b883b18f10cb1fe1af6-7b36.html MVC defined]&lt;br /&gt;
:It defines the MVC design pattern and explains the concept and how it helps simplifies the developer’s work and also improves the maintainability of the code&lt;br /&gt;
&lt;br /&gt;
;*[http://ist.berkeley.edu/as/ag/pub/pdf/mvc-seminar.pdf Seminar pdf on MVC]&lt;br /&gt;
:This the pdf of a MVC seminar used by UC Berkeley. Though not descriptive it gives a bird eye view of MVC operates along with a simple example.&lt;br /&gt;
&lt;br /&gt;
;*[http://cristobal.baray.com/indiana/projects/mvc.html MVC importance]&lt;br /&gt;
:This site is very useful for understanding the importance of design patterns such as MVC and its importance in developing applications with an example. The site discusses how to use applets in order to provide better interface to the user. It also suggests further helpful reading that would help the user to strengthen their base in the understanding of design patterns.&lt;br /&gt;
&lt;br /&gt;
;*[http://en.wikipedia.org/wiki/Model-view-controller Wiki entry on MVC]&lt;br /&gt;
:This link is the Wiki entry for MVC providing its description and various links to MVC implementations in different programming languages.&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;Implementation Specific&amp;quot; Websites ====&lt;br /&gt;
The following sites illustrate the implementation of MVC in different programming languages like SmallTalk (MVC was originally created for this), Java, Ruby, ASP .NET etc.&lt;br /&gt;
&lt;br /&gt;
;*[http://st-www.cs.uiuc.edu/users/smarch/st-docs/mvc.html MVC architecture First Proposal] &lt;br /&gt;
:This provides the paper by Steve Burbeck, who initially proposed the concept of MVC for Small Talk programming. It provides overview of how to use to MVC for application programming in Smalltalk. It discusses the communication within and between the 3 layers of MVC.  It contains information about existing view hierarchy. Some of the existing views are browsers inspectors and debuggers.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.csis.pace.edu/~bergin/mvc/mvcgui.html MVC implemented in Java]&lt;br /&gt;
:This site gives a simple example of Temperature Control system implemented in java using the Observer and Observable ( these classes have been defined in java in order to implement the MVC architecture in Java)  .This site explains in a very instructional way of how to implement MVC in java.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.developer.com/java/ent/article.php/3336761 MVC in Java GUI applications]&lt;br /&gt;
:This site highlights the importance of MVC patterns and its application in many GUI-based applications, client interfaces, and widget toolkits for manipulating and storing data for the end users. Java’s Swing toolkit is a perfect example. The site explains the implementation of MVC in swing. It provides a listing of all components in the model interface. There is a sample code that would help a user to see the functionality of all examples.&lt;br /&gt;
&lt;br /&gt;
;*[http://java.sun.com/blueprints/patterns/MVC-detailed.html Sun description of MVC]&lt;br /&gt;
:This poses a simple situation where the MVC design pattern can be applied and used to solve the problem using JSP’s to render the views, Servlets as controllers, EJB as models&lt;br /&gt;
&lt;br /&gt;
;*[http://www.regdeveloper.co.uk/2006/07/17/ruby_rails_part2/ MVC example in Ruby on Rails]&lt;br /&gt;
:This is a very detailed instructional tutorial aimed at developing a MVC CRUD (Create, Read, Update, Delete) application in Ruby on Rails&lt;br /&gt;
&lt;br /&gt;
;*[http://blogs.ittoolbox.com/emergingtech/edge/archives/mvc-and-rails-12457 Blog on MVC in Ruby on Rails]&lt;br /&gt;
:This is a blog entry on MVC through the viewpoint of a Ruby on Rails developer defining MVC and giving minor details as to how MVC is implemented in Ruby on Rails.&lt;br /&gt;
&lt;br /&gt;
;*[http://wiki.rubyonrails.org/rails/pages/UnderstandingRailsMVC MVC in Rails explained in rubyonrails.org]&lt;br /&gt;
:This is an article on the Ruby on Rails official website defining the MVC usage in Rails along with links to articles within the same website for better understanding of MVC.&lt;br /&gt;
&lt;br /&gt;
;*[http://s3.amazonaws.com/sitepoint-books/ror.pdf Rails book dealing MVC architecture in Rails]&lt;br /&gt;
:This is a free download of pdf format of a book “Build your own Ruby on rails applications” by Patrick Lenz. This free pdf download expires by initial days of December//'2007//. This book provides a very wonderful development from the basics of Ruby to Ruby on Rails(RoR) and the MVC architecture explained and shown how it is embedded in RoR. This comes in conjunction with easy to learn illustrations&lt;br /&gt;
 &lt;br /&gt;
;*[http://www.15seconds.com/issue/060817.htm MVC in ASP .Net]&lt;br /&gt;
:The site provides a detailed but a simple overview of Model View Architecture with ASP.Net. It has pictorial representation of the MVC Framework. The picture will help the user to see the implementation of MVC and helps provide understanding of interactions present in MVC. Moreover there is an example of simple web site development to authenticate the user’s name and password by comparing the data with the database.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.tonymarston.net/php-mysql/infrastructure.html#mvc MVC in PHP]&lt;br /&gt;
:The website explains the application of MVC’s 3 Tier architecture for web development using PHP. It gives a comprehensive view of how to blend MVC architecture with Object oriented capabilities of PHP. It highlights the importance of reusability of code which is one of the most important advantages of MVC architecture.&lt;br /&gt;
&lt;br /&gt;
;*[http://msdn2.microsoft.com/en-us/library/ms978748.aspx MVC explained by MSDN]&lt;br /&gt;
:This site will help a new user to realize the importance of Model View Architecture. It mentions the problems faced by programmer who do not implement this 3 tier architecture and how the problems are resolved using MVC architecture. There is a section where they discussed about the testability which is greatly enhanced by employing this architecture. It also contains information about its benefits and liabilities.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.ifi.unizh.ch/richter/Classes/oose2/03_mvc/02_mvc_java/02_mvc_java.html#4%20Models%20as%20Proxies MVC architecture in Java Swing]&lt;br /&gt;
:This site is an extension to earlier site and provides detailed explanation about the usage of MVC architecture in Java’s Swing. This site is for the advanced users who need to apply MVC in visual programming.&lt;br /&gt;
&lt;br /&gt;
;*[http://images.google.com/imgres?imgurl=http://publib.boulder.ibm.com/infocenter/wsadhelp/v5r1m2/topic/com.ibm.etools.struts.doc/images/cstrdoc018.gif&amp;amp;imgrefurl=http://publib.boulder.ibm.com/infocenter/wsadhelp/v5r1m2/topic/com.ibm.etools.struts.doc/topics/cstrdoc001.html&amp;amp;h=322&amp;amp;w=628&amp;amp;sz=30&amp;amp;hl=en&amp;amp;start=2&amp;amp;um=1&amp;amp;tbnid=tVyYlnDiTkYQbM:&amp;amp;tbnh=70&amp;amp;tbnw=137&amp;amp;prev=/images%3Fq%3DMVC%2B%2Bdesign%2Bpattern%26svnum%3D10%26um%3D1%26hl%3Den%26sa%3DX Google Image explaining MVC in Java]&lt;br /&gt;
:This provides pictorial representation of applications of MVC in Java. It contains images along with explanation for the MVC pattern used in Java explaining MVC and how is it integrated with JSP and struts in Java. &lt;br /&gt;
&lt;br /&gt;
;*[http://www.codeproject.com/useritems/AJAX_MVC.asp?df=100&amp;amp;forumid=362797&amp;amp;exp=0&amp;amp;select=1797776 MVC in .NET and AJAX]&lt;br /&gt;
:This site discusses MVC usage in web based development particularly in .NET and AJAX framework. &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
The sites mentioned above are very useful for several programmers such Java, PHP, Smalltalk programmers. It provides a background for new users who would like to implement design patterns hand in hand with software engineering techniques. &lt;br /&gt;
Most of the sites explain the MVC as a part of implementation of MVC in their specific software or application. Only a few sites actually deal with the concept illustrating it in a lucid way with simple instructional examples.&lt;/div&gt;</summary>
		<author><name>Schinni</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Mvc1.JPG&amp;diff=7921</id>
		<title>File:Mvc1.JPG</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Mvc1.JPG&amp;diff=7921"/>
		<updated>2007-10-28T19:43:28Z</updated>

		<summary type="html">&lt;p&gt;Schinni: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Schinni</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=Http:/pg.ece.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2007/wiki2_3_77&amp;diff=7920</id>
		<title>Http:/pg.ece.ncsu.edu/mediawiki/index.php/CSC/ECE 517 Fall 2007/wiki2 3 77</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Http:/pg.ece.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2007/wiki2_3_77&amp;diff=7920"/>
		<updated>2007-10-28T19:42:37Z</updated>

		<summary type="html">&lt;p&gt;Schinni: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Model/View/Controller Websites Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Topic ===&lt;br /&gt;
----&lt;br /&gt;
Model/view/controller. There are literally hundreds of pages describing MVC on the Web. If someone wants to learn about it, what should (s)he do? Look at the first few hits in Google? I expect we can do better than that. Write a review of the MVC sites on the Web. Which are best for learning about the concept? Which have the most instructive examples? Which are best for explaining how to use the pattern in Ruby and Java? If you choose this topic, you should be sure to peruse at least several dozen sites.&lt;br /&gt;
&lt;br /&gt;
=== Introduction to Model/View/Controller (MVC)===&lt;br /&gt;
----&lt;br /&gt;
This is an architectural pattern adopted in software engineering. Generally, complex computer applications deal with large amount of data in conjunction with the functionality accessing this data. This generally becomes difficult to handle. Hence the programmer prefers to separate the functionality and data (model) from the user interface (view). This technique is very useful since any changes made to user interface may not affect the functionality of the program and vice versa.  The data may be reorganized without making any changes in user interface. This is accomplished by decoupling data access from data presentation and user interface by the introduction of an intermediate component named controller.&lt;br /&gt;
&lt;br /&gt;
[[Image:Mvc_ror.jpg]]&lt;br /&gt;
The application is decoupled into three layers that would allow flexibility and reuse: &lt;br /&gt;
&lt;br /&gt;
'''Model:''' This is the domain-specific representation of information where the application operates. It knows about all the operations that can be used to transform this information. But it has no idea how these operations are invoked.&lt;br /&gt;
&lt;br /&gt;
'''Controller:''' This layer responds to the user (user inputs) which may invoke changes on the model. More specifically as mentioned by “Martin Fowler” in his book “Patterns of Enterprise Application Architecture” in a lucid way “Controller takes user input, manipulates the model and causes the view to update properly”&lt;br /&gt;
&lt;br /&gt;
'''View:''' This layer provides the user interface element. This is the user-visible view of the model where the information is presented in a domain-specific and user-friendly way.&lt;br /&gt;
&lt;br /&gt;
The MVC architectural pattern is very useful for the purpose of web development applications. One of the main purpose it serves is the separation of concerns. Hence, code is cleaner and easier to understand. The other advantage is reusability. The model can be enhanced in order to improve the functionality of the code with very minimal changes to the controller or view. &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Categories of Websites ===&lt;br /&gt;
&lt;br /&gt;
There are many sites available online about MVC which are very useful to a newbie. Certain websites provide proper pictorial representation and conceptual view of architectural pattern while some provide insight into the interaction between the different layers (i.e. model, controller and view). The websites can be categorized into two broad divisions, &amp;quot;Basic Concept&amp;quot;, &amp;quot;Implementation-Specific&amp;quot; and &amp;quot;Examples :&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;Basic Concept&amp;quot; Websites====&lt;br /&gt;
&lt;br /&gt;
Websites dealing with the concept of MVC as a design pattern :&lt;br /&gt;
&lt;br /&gt;
;*[http://www.phpwact.org/pattern/model_view_controller MVC overview]&lt;br /&gt;
:This site provides a detailed overview of MVC pattern. It explains the different layers and relationship among them. It discusses the importance of structuring views, controllers and models.  It contains information about the benefits and drawbacks of MVC along with the irrelevant situations where MVC will not be helpful.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.enode.com/x/markup/tutorial/mvc.html Exemplary overview of MVC]&lt;br /&gt;
:This site is perfect for the new users who want to have a clear idea of the MVC architecture. They have explained it by taking an example of spinner component that consists of text box and 2 buttons which can be used to increase or decrease the value is the text box.&lt;br /&gt;
&lt;br /&gt;
;*[http://articles.techrepublic.com.com/5100-22-1049862.html Tech Republic Article on MVC]&lt;br /&gt;
:Articles in Tech Republic that explain in a lucid way the MVC pattern, where it is best used and couple of its disadvantages.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.adobe.com/devnet/flash/articles/mv_controller.html MVC throughly dealt]&lt;br /&gt;
:This site has a detailed description of the MVC and its abstract working explained in detail. Though it is actually a chapter from textbook referring rarely to previous chapters , it gives a very detailed( in fact most detailed description of MVC with simple examples along with advantages of each feature of the MVC design pattern.&lt;br /&gt;
[[Image:Adobe_MVC.gif]]&lt;br /&gt;
Example Description: Clock &lt;br /&gt;
&lt;br /&gt;
;*[http://www.kvcindia.com/mvc.htm Another MVC overview]&lt;br /&gt;
:The site is important for understanding the basics of MVC architecture. It provides an explanation about the advantages of using MVC architecture. &lt;br /&gt;
&lt;br /&gt;
;*[http://livedocs.adobe.com/flash/9.0/UsingFlash/help.html?content=WSd60f23110762d6b883b18f10cb1fe1af6-7b36.html MVC defined]&lt;br /&gt;
:It defines the MVC design pattern and explains the concept and how it helps simplifies the developer’s work and also improves the maintainability of the code&lt;br /&gt;
&lt;br /&gt;
;*[http://ist.berkeley.edu/as/ag/pub/pdf/mvc-seminar.pdf Seminar pdf on MVC]&lt;br /&gt;
:This the pdf of a MVC seminar used by UC Berkeley. Though not descriptive it gives a bird eye view of MVC operates along with a simple example.&lt;br /&gt;
&lt;br /&gt;
;*[http://cristobal.baray.com/indiana/projects/mvc.html MVC importance]&lt;br /&gt;
:This site is very useful for understanding the importance of design patterns such as MVC and its importance in developing applications with an example. The site discusses how to use applets in order to provide better interface to the user. It also suggests further helpful reading that would help the user to strengthen their base in the understanding of design patterns.&lt;br /&gt;
&lt;br /&gt;
;*[http://en.wikipedia.org/wiki/Model-view-controller Wiki entry on MVC]&lt;br /&gt;
:This link is the Wiki entry for MVC providing its description and various links to MVC implementations in different programming languages.&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;Implementation Specific&amp;quot; Websites ====&lt;br /&gt;
The following sites illustrate the implementation of MVC in different programming languages like SmallTalk (MVC was originally created for this), Java, Ruby, ASP .NET etc.&lt;br /&gt;
&lt;br /&gt;
;*[http://st-www.cs.uiuc.edu/users/smarch/st-docs/mvc.html MVC architecture First Proposal] &lt;br /&gt;
:This provides the paper by Steve Burbeck, who initially proposed the concept of MVC for Small Talk programming. It provides overview of how to use to MVC for application programming in Smalltalk. It discusses the communication within and between the 3 layers of MVC.  It contains information about existing view hierarchy. Some of the existing views are browsers inspectors and debuggers.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.csis.pace.edu/~bergin/mvc/mvcgui.html MVC implemented in Java]&lt;br /&gt;
:This site gives a simple example of Temperature Control system implemented in java using the Observer and Observable ( these classes have been defined in java in order to implement the MVC architecture in Java)  .This site explains in a very instructional way of how to implement MVC in java.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.developer.com/java/ent/article.php/3336761 MVC in Java GUI applications]&lt;br /&gt;
:This site highlights the importance of MVC patterns and its application in many GUI-based applications, client interfaces, and widget toolkits for manipulating and storing data for the end users. Java’s Swing toolkit is a perfect example. The site explains the implementation of MVC in swing. It provides a listing of all components in the model interface. There is a sample code that would help a user to see the functionality of all examples.&lt;br /&gt;
&lt;br /&gt;
;*[http://java.sun.com/blueprints/patterns/MVC-detailed.html Sun description of MVC]&lt;br /&gt;
:This poses a simple situation where the MVC design pattern can be applied and used to solve the problem using JSP’s to render the views, Servlets as controllers, EJB as models&lt;br /&gt;
&lt;br /&gt;
;*[http://www.regdeveloper.co.uk/2006/07/17/ruby_rails_part2/ MVC example in Ruby on Rails]&lt;br /&gt;
:This is a very detailed instructional tutorial aimed at developing a MVC CRUD (Create, Read, Update, Delete) application in Ruby on Rails&lt;br /&gt;
&lt;br /&gt;
;*[http://blogs.ittoolbox.com/emergingtech/edge/archives/mvc-and-rails-12457 Blog on MVC in Ruby on Rails]&lt;br /&gt;
:This is a blog entry on MVC through the viewpoint of a Ruby on Rails developer defining MVC and giving minor details as to how MVC is implemented in Ruby on Rails.&lt;br /&gt;
&lt;br /&gt;
;*[http://wiki.rubyonrails.org/rails/pages/UnderstandingRailsMVC MVC in Rails explained in rubyonrails.org]&lt;br /&gt;
:This is an article on the Ruby on Rails official website defining the MVC usage in Rails along with links to articles within the same website for better understanding of MVC.&lt;br /&gt;
&lt;br /&gt;
;*[http://s3.amazonaws.com/sitepoint-books/ror.pdf Rails book dealing MVC architecture in Rails]&lt;br /&gt;
:This is a free download of pdf format of a book “Build your own Ruby on rails applications” by Patrick Lenz. This free pdf download expires by initial days of December//'2007//. This book provides a very wonderful development from the basics of Ruby to Ruby on Rails(RoR) and the MVC architecture explained and shown how it is embedded in RoR. This comes in conjunction with easy to learn illustrations&lt;br /&gt;
 &lt;br /&gt;
;*[http://www.15seconds.com/issue/060817.htm MVC in ASP .Net]&lt;br /&gt;
:The site provides a detailed but a simple overview of Model View Architecture with ASP.Net. It has pictorial representation of the MVC Framework. The picture will help the user to see the implementation of MVC and helps provide understanding of interactions present in MVC. Moreover there is an example of simple web site development to authenticate the user’s name and password by comparing the data with the database.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.tonymarston.net/php-mysql/infrastructure.html#mvc MVC in PHP]&lt;br /&gt;
:The website explains the application of MVC’s 3 Tier architecture for web development using PHP. It gives a comprehensive view of how to blend MVC architecture with Object oriented capabilities of PHP. It highlights the importance of reusability of code which is one of the most important advantages of MVC architecture.&lt;br /&gt;
&lt;br /&gt;
;*[http://msdn2.microsoft.com/en-us/library/ms978748.aspx MVC explained by MSDN]&lt;br /&gt;
:This site will help a new user to realize the importance of Model View Architecture. It mentions the problems faced by programmer who do not implement this 3 tier architecture and how the problems are resolved using MVC architecture. There is a section where they discussed about the testability which is greatly enhanced by employing this architecture. It also contains information about its benefits and liabilities.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.ifi.unizh.ch/richter/Classes/oose2/03_mvc/02_mvc_java/02_mvc_java.html#4%20Models%20as%20Proxies MVC architecture in Java Swing]&lt;br /&gt;
:This site is an extension to earlier site and provides detailed explanation about the usage of MVC architecture in Java’s Swing. This site is for the advanced users who need to apply MVC in visual programming.&lt;br /&gt;
&lt;br /&gt;
;*[http://images.google.com/imgres?imgurl=http://publib.boulder.ibm.com/infocenter/wsadhelp/v5r1m2/topic/com.ibm.etools.struts.doc/images/cstrdoc018.gif&amp;amp;imgrefurl=http://publib.boulder.ibm.com/infocenter/wsadhelp/v5r1m2/topic/com.ibm.etools.struts.doc/topics/cstrdoc001.html&amp;amp;h=322&amp;amp;w=628&amp;amp;sz=30&amp;amp;hl=en&amp;amp;start=2&amp;amp;um=1&amp;amp;tbnid=tVyYlnDiTkYQbM:&amp;amp;tbnh=70&amp;amp;tbnw=137&amp;amp;prev=/images%3Fq%3DMVC%2B%2Bdesign%2Bpattern%26svnum%3D10%26um%3D1%26hl%3Den%26sa%3DX Google Image explaining MVC in Java]&lt;br /&gt;
:This provides pictorial representation of applications of MVC in Java. It contains images along with explanation for the MVC pattern used in Java explaining MVC and how is it integrated with JSP and struts in Java. &lt;br /&gt;
&lt;br /&gt;
;*[http://www.codeproject.com/useritems/AJAX_MVC.asp?df=100&amp;amp;forumid=362797&amp;amp;exp=0&amp;amp;select=1797776 MVC in .NET and AJAX]&lt;br /&gt;
:This site discusses MVC usage in web based development particularly in .NET and AJAX framework. &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
The sites mentioned above are very useful for several programmers such Java, PHP, Smalltalk programmers. It provides a background for new users who would like to implement design patterns hand in hand with software engineering techniques. &lt;br /&gt;
Most of the sites explain the MVC as a part of implementation of MVC in their specific software or application. Only a few sites actually deal with the concept illustrating it in a lucid way with simple instructional examples.&lt;/div&gt;</summary>
		<author><name>Schinni</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=Http:/pg.ece.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2007/wiki2_3_77&amp;diff=7919</id>
		<title>Http:/pg.ece.ncsu.edu/mediawiki/index.php/CSC/ECE 517 Fall 2007/wiki2 3 77</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Http:/pg.ece.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2007/wiki2_3_77&amp;diff=7919"/>
		<updated>2007-10-28T19:41:35Z</updated>

		<summary type="html">&lt;p&gt;Schinni: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Model/View/Controller Websites Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Topic ===&lt;br /&gt;
----&lt;br /&gt;
Model/view/controller. There are literally hundreds of pages describing MVC on the Web. If someone wants to learn about it, what should (s)he do? Look at the first few hits in Google? I expect we can do better than that. Write a review of the MVC sites on the Web. Which are best for learning about the concept? Which have the most instructive examples? Which are best for explaining how to use the pattern in Ruby and Java? If you choose this topic, you should be sure to peruse at least several dozen sites.&lt;br /&gt;
&lt;br /&gt;
=== Introduction to Model/View/Controller (MVC)===&lt;br /&gt;
----&lt;br /&gt;
This is an architectural pattern adopted in software engineering. Generally, complex computer applications deal with large amount of data in conjunction with the functionality accessing this data. This generally becomes difficult to handle. Hence the programmer prefers to separate the functionality and data (model) from the user interface (view). This technique is very useful since any changes made to user interface may not affect the functionality of the program and vice versa.  The data may be reorganized without making any changes in user interface. This is accomplished by decoupling data access from data presentation and user interface by the introduction of an intermediate component named controller.&lt;br /&gt;
&lt;br /&gt;
[[Image:mvc_ror.jpg]]&lt;br /&gt;
The application is decoupled into three layers that would allow flexibility and reuse: &lt;br /&gt;
&lt;br /&gt;
'''Model:''' This is the domain-specific representation of information where the application operates. It knows about all the operations that can be used to transform this information. But it has no idea how these operations are invoked.&lt;br /&gt;
&lt;br /&gt;
'''Controller:''' This layer responds to the user (user inputs) which may invoke changes on the model. More specifically as mentioned by “Martin Fowler” in his book “Patterns of Enterprise Application Architecture” in a lucid way “Controller takes user input, manipulates the model and causes the view to update properly”&lt;br /&gt;
&lt;br /&gt;
'''View:''' This layer provides the user interface element. This is the user-visible view of the model where the information is presented in a domain-specific and user-friendly way.&lt;br /&gt;
&lt;br /&gt;
The MVC architectural pattern is very useful for the purpose of web development applications. One of the main purpose it serves is the separation of concerns. Hence, code is cleaner and easier to understand. The other advantage is reusability. The model can be enhanced in order to improve the functionality of the code with very minimal changes to the controller or view. &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Categories of Websites ===&lt;br /&gt;
&lt;br /&gt;
There are many sites available online about MVC which are very useful to a newbie. Certain websites provide proper pictorial representation and conceptual view of architectural pattern while some provide insight into the interaction between the different layers (i.e. model, controller and view). The websites can be categorized into two broad divisions, &amp;quot;Basic Concept&amp;quot;, &amp;quot;Implementation-Specific&amp;quot; and &amp;quot;Examples :&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;Basic Concept&amp;quot; Websites====&lt;br /&gt;
&lt;br /&gt;
Websites dealing with the concept of MVC as a design pattern :&lt;br /&gt;
&lt;br /&gt;
;*[http://www.phpwact.org/pattern/model_view_controller MVC overview]&lt;br /&gt;
:This site provides a detailed overview of MVC pattern. It explains the different layers and relationship among them. It discusses the importance of structuring views, controllers and models.  It contains information about the benefits and drawbacks of MVC along with the irrelevant situations where MVC will not be helpful.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.enode.com/x/markup/tutorial/mvc.html Exemplary overview of MVC]&lt;br /&gt;
:This site is perfect for the new users who want to have a clear idea of the MVC architecture. They have explained it by taking an example of spinner component that consists of text box and 2 buttons which can be used to increase or decrease the value is the text box.&lt;br /&gt;
&lt;br /&gt;
;*[http://articles.techrepublic.com.com/5100-22-1049862.html Tech Republic Article on MVC]&lt;br /&gt;
:Articles in Tech Republic that explain in a lucid way the MVC pattern, where it is best used and couple of its disadvantages.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.adobe.com/devnet/flash/articles/mv_controller.html MVC throughly dealt]&lt;br /&gt;
:This site has a detailed description of the MVC and its abstract working explained in detail. Though it is actually a chapter from textbook referring rarely to previous chapters , it gives a very detailed( in fact most detailed description of MVC with simple examples along with advantages of each feature of the MVC design pattern.&lt;br /&gt;
[[Image:Adobe_MVC.gif]]&lt;br /&gt;
Example Description: Clock &lt;br /&gt;
&lt;br /&gt;
;*[http://www.kvcindia.com/mvc.htm Another MVC overview]&lt;br /&gt;
:The site is important for understanding the basics of MVC architecture. It provides an explanation about the advantages of using MVC architecture. &lt;br /&gt;
&lt;br /&gt;
;*[http://livedocs.adobe.com/flash/9.0/UsingFlash/help.html?content=WSd60f23110762d6b883b18f10cb1fe1af6-7b36.html MVC defined]&lt;br /&gt;
:It defines the MVC design pattern and explains the concept and how it helps simplifies the developer’s work and also improves the maintainability of the code&lt;br /&gt;
&lt;br /&gt;
;*[http://ist.berkeley.edu/as/ag/pub/pdf/mvc-seminar.pdf Seminar pdf on MVC]&lt;br /&gt;
:This the pdf of a MVC seminar used by UC Berkeley. Though not descriptive it gives a bird eye view of MVC operates along with a simple example.&lt;br /&gt;
&lt;br /&gt;
;*[http://cristobal.baray.com/indiana/projects/mvc.html MVC importance]&lt;br /&gt;
:This site is very useful for understanding the importance of design patterns such as MVC and its importance in developing applications with an example. The site discusses how to use applets in order to provide better interface to the user. It also suggests further helpful reading that would help the user to strengthen their base in the understanding of design patterns.&lt;br /&gt;
&lt;br /&gt;
;*[http://en.wikipedia.org/wiki/Model-view-controller Wiki entry on MVC]&lt;br /&gt;
:This link is the Wiki entry for MVC providing its description and various links to MVC implementations in different programming languages.&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;Implementation Specific&amp;quot; Websites ====&lt;br /&gt;
The following sites illustrate the implementation of MVC in different programming languages like SmallTalk (MVC was originally created for this), Java, Ruby, ASP .NET etc.&lt;br /&gt;
&lt;br /&gt;
;*[http://st-www.cs.uiuc.edu/users/smarch/st-docs/mvc.html MVC architecture First Proposal] &lt;br /&gt;
:This provides the paper by Steve Burbeck, who initially proposed the concept of MVC for Small Talk programming. It provides overview of how to use to MVC for application programming in Smalltalk. It discusses the communication within and between the 3 layers of MVC.  It contains information about existing view hierarchy. Some of the existing views are browsers inspectors and debuggers.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.csis.pace.edu/~bergin/mvc/mvcgui.html MVC implemented in Java]&lt;br /&gt;
:This site gives a simple example of Temperature Control system implemented in java using the Observer and Observable ( these classes have been defined in java in order to implement the MVC architecture in Java)  .This site explains in a very instructional way of how to implement MVC in java.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.developer.com/java/ent/article.php/3336761 MVC in Java GUI applications]&lt;br /&gt;
:This site highlights the importance of MVC patterns and its application in many GUI-based applications, client interfaces, and widget toolkits for manipulating and storing data for the end users. Java’s Swing toolkit is a perfect example. The site explains the implementation of MVC in swing. It provides a listing of all components in the model interface. There is a sample code that would help a user to see the functionality of all examples.&lt;br /&gt;
&lt;br /&gt;
;*[http://java.sun.com/blueprints/patterns/MVC-detailed.html Sun description of MVC]&lt;br /&gt;
:This poses a simple situation where the MVC design pattern can be applied and used to solve the problem using JSP’s to render the views, Servlets as controllers, EJB as models&lt;br /&gt;
&lt;br /&gt;
;*[http://www.regdeveloper.co.uk/2006/07/17/ruby_rails_part2/ MVC example in Ruby on Rails]&lt;br /&gt;
:This is a very detailed instructional tutorial aimed at developing a MVC CRUD (Create, Read, Update, Delete) application in Ruby on Rails&lt;br /&gt;
&lt;br /&gt;
;*[http://blogs.ittoolbox.com/emergingtech/edge/archives/mvc-and-rails-12457 Blog on MVC in Ruby on Rails]&lt;br /&gt;
:This is a blog entry on MVC through the viewpoint of a Ruby on Rails developer defining MVC and giving minor details as to how MVC is implemented in Ruby on Rails.&lt;br /&gt;
&lt;br /&gt;
;*[http://wiki.rubyonrails.org/rails/pages/UnderstandingRailsMVC MVC in Rails explained in rubyonrails.org]&lt;br /&gt;
:This is an article on the Ruby on Rails official website defining the MVC usage in Rails along with links to articles within the same website for better understanding of MVC.&lt;br /&gt;
&lt;br /&gt;
;*[http://s3.amazonaws.com/sitepoint-books/ror.pdf Rails book dealing MVC architecture in Rails]&lt;br /&gt;
:This is a free download of pdf format of a book “Build your own Ruby on rails applications” by Patrick Lenz. This free pdf download expires by initial days of December//'2007//. This book provides a very wonderful development from the basics of Ruby to Ruby on Rails(RoR) and the MVC architecture explained and shown how it is embedded in RoR. This comes in conjunction with easy to learn illustrations&lt;br /&gt;
 &lt;br /&gt;
;*[http://www.15seconds.com/issue/060817.htm MVC in ASP .Net]&lt;br /&gt;
:The site provides a detailed but a simple overview of Model View Architecture with ASP.Net. It has pictorial representation of the MVC Framework. The picture will help the user to see the implementation of MVC and helps provide understanding of interactions present in MVC. Moreover there is an example of simple web site development to authenticate the user’s name and password by comparing the data with the database.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.tonymarston.net/php-mysql/infrastructure.html#mvc MVC in PHP]&lt;br /&gt;
:The website explains the application of MVC’s 3 Tier architecture for web development using PHP. It gives a comprehensive view of how to blend MVC architecture with Object oriented capabilities of PHP. It highlights the importance of reusability of code which is one of the most important advantages of MVC architecture.&lt;br /&gt;
&lt;br /&gt;
;*[http://msdn2.microsoft.com/en-us/library/ms978748.aspx MVC explained by MSDN]&lt;br /&gt;
:This site will help a new user to realize the importance of Model View Architecture. It mentions the problems faced by programmer who do not implement this 3 tier architecture and how the problems are resolved using MVC architecture. There is a section where they discussed about the testability which is greatly enhanced by employing this architecture. It also contains information about its benefits and liabilities.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.ifi.unizh.ch/richter/Classes/oose2/03_mvc/02_mvc_java/02_mvc_java.html#4%20Models%20as%20Proxies MVC architecture in Java Swing]&lt;br /&gt;
:This site is an extension to earlier site and provides detailed explanation about the usage of MVC architecture in Java’s Swing. This site is for the advanced users who need to apply MVC in visual programming.&lt;br /&gt;
&lt;br /&gt;
;*[http://images.google.com/imgres?imgurl=http://publib.boulder.ibm.com/infocenter/wsadhelp/v5r1m2/topic/com.ibm.etools.struts.doc/images/cstrdoc018.gif&amp;amp;imgrefurl=http://publib.boulder.ibm.com/infocenter/wsadhelp/v5r1m2/topic/com.ibm.etools.struts.doc/topics/cstrdoc001.html&amp;amp;h=322&amp;amp;w=628&amp;amp;sz=30&amp;amp;hl=en&amp;amp;start=2&amp;amp;um=1&amp;amp;tbnid=tVyYlnDiTkYQbM:&amp;amp;tbnh=70&amp;amp;tbnw=137&amp;amp;prev=/images%3Fq%3DMVC%2B%2Bdesign%2Bpattern%26svnum%3D10%26um%3D1%26hl%3Den%26sa%3DX Google Image explaining MVC in Java]&lt;br /&gt;
:This provides pictorial representation of applications of MVC in Java. It contains images along with explanation for the MVC pattern used in Java explaining MVC and how is it integrated with JSP and struts in Java. &lt;br /&gt;
&lt;br /&gt;
;*[http://www.codeproject.com/useritems/AJAX_MVC.asp?df=100&amp;amp;forumid=362797&amp;amp;exp=0&amp;amp;select=1797776 MVC in .NET and AJAX]&lt;br /&gt;
:This site discusses MVC usage in web based development particularly in .NET and AJAX framework. &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
The sites mentioned above are very useful for several programmers such Java, PHP, Smalltalk programmers. It provides a background for new users who would like to implement design patterns hand in hand with software engineering techniques. &lt;br /&gt;
Most of the sites explain the MVC as a part of implementation of MVC in their specific software or application. Only a few sites actually deal with the concept illustrating it in a lucid way with simple instructional examples.&lt;/div&gt;</summary>
		<author><name>Schinni</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Mvc_ror.JPG&amp;diff=7918</id>
		<title>File:Mvc ror.JPG</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Mvc_ror.JPG&amp;diff=7918"/>
		<updated>2007-10-28T19:40:45Z</updated>

		<summary type="html">&lt;p&gt;Schinni: MVC in handling a page request.
Source: &amp;quot;Build Your Own Ruby on Rails Web applications&amp;quot; book by Patrick Lenz&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;MVC in handling a page request.&lt;br /&gt;
Source: &amp;quot;Build Your Own Ruby on Rails Web applications&amp;quot; book by Patrick Lenz&lt;/div&gt;</summary>
		<author><name>Schinni</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=Http:/pg.ece.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2007/wiki2_3_77&amp;diff=7878</id>
		<title>Http:/pg.ece.ncsu.edu/mediawiki/index.php/CSC/ECE 517 Fall 2007/wiki2 3 77</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Http:/pg.ece.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2007/wiki2_3_77&amp;diff=7878"/>
		<updated>2007-10-28T05:51:13Z</updated>

		<summary type="html">&lt;p&gt;Schinni: /* Categories of Websites */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Model/View/Controller Websites Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Topic ===&lt;br /&gt;
----&lt;br /&gt;
Model/view/controller. There are literally hundreds of pages describing MVC on the Web. If someone wants to learn about it, what should (s)he do? Look at the first few hits in Google? I expect we can do better than that. Write a review of the MVC sites on the Web. Which are best for learning about the concept? Which have the most instructive examples? Which are best for explaining how to use the pattern in Ruby and Java? If you choose this topic, you should be sure to peruse at least several dozen sites.&lt;br /&gt;
&lt;br /&gt;
=== Introduction to Model/View/Controller (MVC)===&lt;br /&gt;
----&lt;br /&gt;
This is an architectural pattern adopted in software engineering. Generally, complex computer applications deal with large amount of data in conjunction with the functionality accessing this data. This generally becomes difficult to handle. Hence the programmer prefers to separate the functionality and data (model) from the user interface (view). This technique is very useful since any changes made to user interface may not affect the functionality of the program and vice versa.  The data may be reorganized without making any changes in user interface. This is accomplished by decoupling data access from data presentation and user interface by the introduction of an intermediate component named controller.&lt;br /&gt;
&lt;br /&gt;
The application is decoupled into three layers that would allow flexibility and reuse: &lt;br /&gt;
&lt;br /&gt;
'''Model:''' This is the domain-specific representation of information where the application operates. It knows about all the operations that can be used to transform this information. But it has no idea how these operations are invoked.&lt;br /&gt;
&lt;br /&gt;
'''Controller:''' This layer responds to the user (user inputs) which may invoke changes on the model. More specifically as mentioned by “Martin Fowler” in his book “Patterns of Enterprise Application Architecture” in a lucid way “Controller takes user input, manipulates the model and causes the view to update properly”&lt;br /&gt;
&lt;br /&gt;
'''View:''' This layer provides the user interface element. This is the user-visible view of the model where the information is presented in a domain-specific and user-friendly way.&lt;br /&gt;
&lt;br /&gt;
The MVC architectural pattern is very useful for the purpose of web development applications. One of the main purpose it serves is the separation of concerns. Hence, code is cleaner and easier to understand. The other advantage is reusability. The model can be enhanced in order to improve the functionality of the code with very minimal changes to the controller or view. &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Categories of Websites ===&lt;br /&gt;
&lt;br /&gt;
There are many sites available online about MVC which are very useful to a newbie. Certain websites provide proper pictorial representation and conceptual view of architectural pattern while some provide insight into the interaction between the different layers (i.e. model, controller and view). The websites can be categorized into two broad divisions, &amp;quot;Basic Concept&amp;quot;, &amp;quot;Implementation-Specific&amp;quot; and &amp;quot;Examples :&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;Basic Concept&amp;quot; Websites====&lt;br /&gt;
&lt;br /&gt;
Websites dealing with the concept of MVC as a design pattern :&lt;br /&gt;
&lt;br /&gt;
;*[http://www.phpwact.org/pattern/model_view_controller MVC overview]&lt;br /&gt;
:This site provides a detailed overview of MVC pattern. It explains the different layers and relationship among them. It discusses the importance of structuring views, controllers and models.  It contains information about the benefits and drawbacks of MVC along with the irrelevant situations where MVC will not be helpful.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.enode.com/x/markup/tutorial/mvc.html Exemplary overview of MVC]&lt;br /&gt;
:This site is perfect for the new users who want to have a clear idea of the MVC architecture. They have explained it by taking an example of spinner component that consists of text box and 2 buttons which can be used to increase or decrease the value is the text box.&lt;br /&gt;
&lt;br /&gt;
;*[http://articles.techrepublic.com.com/5100-22-1049862.html Tech Republic Article on MVC]&lt;br /&gt;
:Articles in Tech Republic that explain in a lucid way the MVC pattern, where it is best used and couple of its disadvantages.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.adobe.com/devnet/flash/articles/mv_controller.html MVC throughly dealt]&lt;br /&gt;
:This site has a detailed description of the MVC and its abstract working explained in detail. Though it is actually a chapter from textbook referring rarely to previous chapters , it gives a very detailed( in fact most detailed description of MVC with simple examples along with advantages of each feature of the MVC design pattern.&lt;br /&gt;
[[Image:Adobe_MVC.gif]]&lt;br /&gt;
Example Description: Clock &lt;br /&gt;
&lt;br /&gt;
;*[http://www.kvcindia.com/mvc.htm Another MVC overview]&lt;br /&gt;
:The site is important for understanding the basics of MVC architecture. It provides an explanation about the advantages of using MVC architecture. &lt;br /&gt;
&lt;br /&gt;
;*[http://livedocs.adobe.com/flash/9.0/UsingFlash/help.html?content=WSd60f23110762d6b883b18f10cb1fe1af6-7b36.html MVC defined]&lt;br /&gt;
:It defines the MVC design pattern and explains the concept and how it helps simplifies the developer’s work and also improves the maintainability of the code&lt;br /&gt;
&lt;br /&gt;
;*[http://ist.berkeley.edu/as/ag/pub/pdf/mvc-seminar.pdf Seminar pdf on MVC]&lt;br /&gt;
:This the pdf of a MVC seminar used by UC Berkeley. Though not descriptive it gives a bird eye view of MVC operates along with a simple example.&lt;br /&gt;
&lt;br /&gt;
;*[http://cristobal.baray.com/indiana/projects/mvc.html MVC importance]&lt;br /&gt;
:This site is very useful for understanding the importance of design patterns such as MVC and its importance in developing applications with an example. The site discusses how to use applets in order to provide better interface to the user. It also suggests further helpful reading that would help the user to strengthen their base in the understanding of design patterns.&lt;br /&gt;
&lt;br /&gt;
;*[http://en.wikipedia.org/wiki/Model-view-controller Wiki entry on MVC]&lt;br /&gt;
:This link is the Wiki entry for MVC providing its description and various links to MVC implementations in different programming languages.&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;Implementation Specific&amp;quot; Websites ====&lt;br /&gt;
The following sites illustrate the implementation of MVC in different programming languages like SmallTalk (MVC was originally created for this), Java, Ruby, ASP .NET etc.&lt;br /&gt;
&lt;br /&gt;
;*[http://st-www.cs.uiuc.edu/users/smarch/st-docs/mvc.html MVC architecture First Proposal] &lt;br /&gt;
:This provides the paper by Steve Burbeck, who initially proposed the concept of MVC for Small Talk programming. It provides overview of how to use to MVC for application programming in Smalltalk. It discusses the communication within and between the 3 layers of MVC.  It contains information about existing view hierarchy. Some of the existing views are browsers inspectors and debuggers.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.csis.pace.edu/~bergin/mvc/mvcgui.html MVC implemented in Java]&lt;br /&gt;
:This site gives a simple example of Temperature Control system implemented in java using the Observer and Observable ( these classes have been defined in java in order to implement the MVC architecture in Java)  .This site explains in a very instructional way of how to implement MVC in java.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.developer.com/java/ent/article.php/3336761 MVC in Java GUI applications]&lt;br /&gt;
:This site highlights the importance of MVC patterns and its application in many GUI-based applications, client interfaces, and widget toolkits for manipulating and storing data for the end users. Java’s Swing toolkit is a perfect example. The site explains the implementation of MVC in swing. It provides a listing of all components in the model interface. There is a sample code that would help a user to see the functionality of all examples.&lt;br /&gt;
&lt;br /&gt;
;*[http://java.sun.com/blueprints/patterns/MVC-detailed.html Sun description of MVC]&lt;br /&gt;
:This poses a simple situation where the MVC design pattern can be applied and used to solve the problem using JSP’s to render the views, Servlets as controllers, EJB as models&lt;br /&gt;
&lt;br /&gt;
;*[http://www.regdeveloper.co.uk/2006/07/17/ruby_rails_part2/ MVC example in Ruby on Rails]&lt;br /&gt;
:This is a very detailed instructional tutorial aimed at developing a MVC CRUD (Create, Read, Update, Delete) application in Ruby on Rails&lt;br /&gt;
&lt;br /&gt;
;*[http://blogs.ittoolbox.com/emergingtech/edge/archives/mvc-and-rails-12457 Blog on MVC in Ruby on Rails]&lt;br /&gt;
:This is a blog entry on MVC through the viewpoint of a Ruby on Rails developer defining MVC and giving minor details as to how MVC is implemented in Ruby on Rails.&lt;br /&gt;
&lt;br /&gt;
;*[http://wiki.rubyonrails.org/rails/pages/UnderstandingRailsMVC MVC in Rails explained in rubyonrails.org]&lt;br /&gt;
:This is an article on the Ruby on Rails official website defining the MVC usage in Rails along with links to articles within the same website for better understanding of MVC.&lt;br /&gt;
&lt;br /&gt;
;*[http://s3.amazonaws.com/sitepoint-books/ror.pdf Rails book dealing MVC architecture in Rails]&lt;br /&gt;
:This is a free download of pdf format of a book “Build your own Ruby on rails applications” by Patrick Lenz. This free pdf download expires by initial days of December//'2007//. This book provides a very wonderful development from the basics of Ruby to Ruby on Rails(RoR) and the MVC architecture explained and shown how it is embedded in RoR. This comes in conjunction with easy to learn illustrations&lt;br /&gt;
 &lt;br /&gt;
;*[http://www.15seconds.com/issue/060817.htm MVC in ASP .Net]&lt;br /&gt;
:The site provides a detailed but a simple overview of Model View Architecture with ASP.Net. It has pictorial representation of the MVC Framework. The picture will help the user to see the implementation of MVC and helps provide understanding of interactions present in MVC. Moreover there is an example of simple web site development to authenticate the user’s name and password by comparing the data with the database.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.tonymarston.net/php-mysql/infrastructure.html#mvc MVC in PHP]&lt;br /&gt;
:The website explains the application of MVC’s 3 Tier architecture for web development using PHP. It gives a comprehensive view of how to blend MVC architecture with Object oriented capabilities of PHP. It highlights the importance of reusability of code which is one of the most important advantages of MVC architecture.&lt;br /&gt;
&lt;br /&gt;
;*[http://msdn2.microsoft.com/en-us/library/ms978748.aspx MVC explained by MSDN]&lt;br /&gt;
:This site will help a new user to realize the importance of Model View Architecture. It mentions the problems faced by programmer who do not implement this 3 tier architecture and how the problems are resolved using MVC architecture. There is a section where they discussed about the testability which is greatly enhanced by employing this architecture. It also contains information about its benefits and liabilities.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.ifi.unizh.ch/richter/Classes/oose2/03_mvc/02_mvc_java/02_mvc_java.html#4%20Models%20as%20Proxies MVC architecture in Java Swing]&lt;br /&gt;
:This site is an extension to earlier site and provides detailed explanation about the usage of MVC architecture in Java’s Swing. This site is for the advanced users who need to apply MVC in visual programming.&lt;br /&gt;
&lt;br /&gt;
;*[http://images.google.com/imgres?imgurl=http://publib.boulder.ibm.com/infocenter/wsadhelp/v5r1m2/topic/com.ibm.etools.struts.doc/images/cstrdoc018.gif&amp;amp;imgrefurl=http://publib.boulder.ibm.com/infocenter/wsadhelp/v5r1m2/topic/com.ibm.etools.struts.doc/topics/cstrdoc001.html&amp;amp;h=322&amp;amp;w=628&amp;amp;sz=30&amp;amp;hl=en&amp;amp;start=2&amp;amp;um=1&amp;amp;tbnid=tVyYlnDiTkYQbM:&amp;amp;tbnh=70&amp;amp;tbnw=137&amp;amp;prev=/images%3Fq%3DMVC%2B%2Bdesign%2Bpattern%26svnum%3D10%26um%3D1%26hl%3Den%26sa%3DX Google Image explaining MVC in Java]&lt;br /&gt;
:This provides pictorial representation of applications of MVC in Java. It contains images along with explanation for the MVC pattern used in Java explaining MVC and how is it integrated with JSP and struts in Java. &lt;br /&gt;
&lt;br /&gt;
;*[http://www.codeproject.com/useritems/AJAX_MVC.asp?df=100&amp;amp;forumid=362797&amp;amp;exp=0&amp;amp;select=1797776 MVC in .NET and AJAX]&lt;br /&gt;
:This site discusses MVC usage in web based development particularly in .NET and AJAX framework. &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
The sites mentioned above are very useful for several programmers such Java, PHP, Smalltalk programmers. It provides a background for new users who would like to implement design patterns hand in hand with software engineering techniques. &lt;br /&gt;
Most of the sites explain the MVC as a part of implementation of MVC in their specific software or application. Only a few sites actually deal with the concept illustrating it in a lucid way with simple instructional examples.&lt;/div&gt;</summary>
		<author><name>Schinni</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=Http:/pg.ece.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2007/wiki2_3_77&amp;diff=7876</id>
		<title>Http:/pg.ece.ncsu.edu/mediawiki/index.php/CSC/ECE 517 Fall 2007/wiki2 3 77</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Http:/pg.ece.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2007/wiki2_3_77&amp;diff=7876"/>
		<updated>2007-10-28T05:39:31Z</updated>

		<summary type="html">&lt;p&gt;Schinni: /* Websites categorized */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Model/View/Controller Websites Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Topic ===&lt;br /&gt;
----&lt;br /&gt;
Model/view/controller. There are literally hundreds of pages describing MVC on the Web. If someone wants to learn about it, what should (s)he do? Look at the first few hits in Google? I expect we can do better than that. Write a review of the MVC sites on the Web. Which are best for learning about the concept? Which have the most instructive examples? Which are best for explaining how to use the pattern in Ruby and Java? If you choose this topic, you should be sure to peruse at least several dozen sites.&lt;br /&gt;
&lt;br /&gt;
=== Introduction to Model/View/Controller (MVC)===&lt;br /&gt;
----&lt;br /&gt;
This is an architectural pattern adopted in software engineering. Generally, complex computer applications deal with large amount of data in conjunction with the functionality accessing this data. This generally becomes difficult to handle. Hence the programmer prefers to separate the functionality and data (model) from the user interface (view). This technique is very useful since any changes made to user interface may not affect the functionality of the program and vice versa.  The data may be reorganized without making any changes in user interface. This is accomplished by decoupling data access from data presentation and user interface by the introduction of an intermediate component named controller.&lt;br /&gt;
&lt;br /&gt;
The application is decoupled into three layers that would allow flexibility and reuse: &lt;br /&gt;
&lt;br /&gt;
'''Model:''' This is the domain-specific representation of information where the application operates. It knows about all the operations that can be used to transform this information. But it has no idea how these operations are invoked.&lt;br /&gt;
&lt;br /&gt;
'''Controller:''' This layer responds to the user (user inputs) which may invoke changes on the model. More specifically as mentioned by “Martin Fowler” in his book “Patterns of Enterprise Application Architecture” in a lucid way “Controller takes user input, manipulates the model and causes the view to update properly”&lt;br /&gt;
&lt;br /&gt;
'''View:''' This layer provides the user interface element. This is the user-visible view of the model where the information is presented in a domain-specific and user-friendly way.&lt;br /&gt;
&lt;br /&gt;
The MVC architectural pattern is very useful for the purpose of web development applications. One of the main purpose it serves is the separation of concerns. Hence, code is cleaner and easier to understand. The other advantage is reusability. The model can be enhanced in order to improve the functionality of the code with very minimal changes to the controller or view. &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Categories of Websites ===&lt;br /&gt;
&lt;br /&gt;
There are many sites available online which are very useful to a newbie. Certain websites provide proper pictorial representation and conceptual view of architectural pattern. The sites also provide insight into the interaction between the different layers (i.e. model, controller and view). The websites can be categorized into two broad divisions, &amp;quot;Basic Concept&amp;quot; and &amp;quot;Implementation-Specific&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;Basic Concept&amp;quot; Websites====&lt;br /&gt;
&lt;br /&gt;
Websites dealing with the concept of MVC as design pattern rather than an architecture basis used for implementing a particular programming language:&lt;br /&gt;
;*[http://www.phpwact.org/pattern/model_view_controller MVC overview]&lt;br /&gt;
:This site provides a detailed overview of MVC pattern. It explains the different layers and relationship among them. It discusses the importance of structuring views, controllers and models.  It contains information about the benefits and drawbacks of MVC along with the irrelevant situations where MVC will not be helpful.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.enode.com/x/markup/tutorial/mvc.html Exemplary overview of MVC]&lt;br /&gt;
:This site is perfect for the new users who want to have a clear idea of the MVC architecture. They have explained it by taking an example of spinner component that consists of text box and 2 buttons which can be used to increase or decrease the value is the text box.&lt;br /&gt;
&lt;br /&gt;
;*[http://articles.techrepublic.com.com/5100-22-1049862.html Tech Republic Article on MVC]&lt;br /&gt;
:Articles in Tech Republic that explain in a lucid way the MVC pattern, where it is best used and couple of its disadvantages.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.adobe.com/devnet/flash/articles/mv_controller.html MVC throughly dealt]&lt;br /&gt;
:This site has a detailed description of the MVC and its abstract working explained in detail. Though it is actually a chapter from textbook referring rarely to previous chapters , it gives a very detailed( in fact most detailed description of MVC with simple examples along with advantages of each feature of the MVC design pattern.&lt;br /&gt;
[[Image:Adobe_MVC.gif]]&lt;br /&gt;
Example Description: Clock &lt;br /&gt;
&lt;br /&gt;
;*[http://www.kvcindia.com/mvc.htm Another MVC overview]&lt;br /&gt;
:The site is important for understanding the basics of MVC architecture. It provides an explanation about the advantages of using MVC architecture. &lt;br /&gt;
&lt;br /&gt;
;*[http://livedocs.adobe.com/flash/9.0/UsingFlash/help.html?content=WSd60f23110762d6b883b18f10cb1fe1af6-7b36.html MVC defined]&lt;br /&gt;
:It defines the MVC design pattern and explains the concept and how it helps simplifies the developer’s work and also improves the maintainability of the code&lt;br /&gt;
&lt;br /&gt;
;*[http://ist.berkeley.edu/as/ag/pub/pdf/mvc-seminar.pdf Seminar pdf on MVC]&lt;br /&gt;
:This the pdf of a MVC seminar used by UC Berkeley. Though not descriptive it gives a bird eye view of MVC operates along with a simple example.&lt;br /&gt;
&lt;br /&gt;
;*[http://cristobal.baray.com/indiana/projects/mvc.html MVC importance]&lt;br /&gt;
:This site is very useful for understanding the importance of design patterns such as MVC and its importance in developing applications with an example. The site discusses how to use applets in order to provide better interface to the user. It also suggests further helpful reading that would help the user to strengthen their base in the understanding of design patterns.&lt;br /&gt;
&lt;br /&gt;
;*[http://en.wikipedia.org/wiki/Model-view-controller Wiki entry on MVC]&lt;br /&gt;
:This link is the Wiki entry for MVC providing its description and various links to MVC implementations in different programming languages.&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;Implementation Specific&amp;quot; Websites ====&lt;br /&gt;
The following sites illustrate the implementation of MVC in different programming languages like SmallTalk (MVC was originally created for this), Java, Ruby, ASP .NET etc.&lt;br /&gt;
&lt;br /&gt;
;*[http://st-www.cs.uiuc.edu/users/smarch/st-docs/mvc.html MVC architecture First Proposal] &lt;br /&gt;
:This provides the paper by Steve Burbeck, who initially proposed the concept of MVC for Small Talk programming. It provides overview of how to use to MVC for application programming in Smalltalk. It discusses the communication within and between the 3 layers of MVC.  It contains information about existing view hierarchy. Some of the existing views are browsers inspectors and debuggers.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.csis.pace.edu/~bergin/mvc/mvcgui.html MVC implemented in Java]&lt;br /&gt;
:This site gives a simple example of Temperature Control system implemented in java using the Observer and Observable ( these classes have been defined in java in order to implement the MVC architecture in Java)  .This site explains in a very instructional way of how to implement MVC in java.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.developer.com/java/ent/article.php/3336761 MVC in Java GUI applications]&lt;br /&gt;
:This site highlights the importance of MVC patterns and its application in many GUI-based applications, client interfaces, and widget toolkits for manipulating and storing data for the end users. Java’s Swing toolkit is a perfect example. The site explains the implementation of MVC in swing. It provides a listing of all components in the model interface. There is a sample code that would help a user to see the functionality of all examples.&lt;br /&gt;
&lt;br /&gt;
;*[http://java.sun.com/blueprints/patterns/MVC-detailed.html Sun description of MVC]&lt;br /&gt;
:This poses a simple situation where the MVC design pattern can be applied and used to solve the problem using JSP’s to render the views, Servlets as controllers, EJB as models&lt;br /&gt;
&lt;br /&gt;
;*[http://www.regdeveloper.co.uk/2006/07/17/ruby_rails_part2/ MVC example in Ruby on Rails]&lt;br /&gt;
:This is a very detailed instructional tutorial aimed at developing a MVC CRUD (Create, Read, Update, Delete) application in Ruby on Rails&lt;br /&gt;
&lt;br /&gt;
;*[http://blogs.ittoolbox.com/emergingtech/edge/archives/mvc-and-rails-12457 Blog on MVC in Ruby on Rails]&lt;br /&gt;
:This is a blog entry on MVC through the viewpoint of a Ruby on Rails developer defining MVC and giving minor details as to how MVC is implemented in Ruby on Rails.&lt;br /&gt;
&lt;br /&gt;
;*[http://wiki.rubyonrails.org/rails/pages/UnderstandingRailsMVC MVC in Rails explained in rubyonrails.org]&lt;br /&gt;
:This is an article on the Ruby on Rails official website defining the MVC usage in Rails along with links to articles within the same website for better understanding of MVC.&lt;br /&gt;
&lt;br /&gt;
;*[http://s3.amazonaws.com/sitepoint-books/ror.pdf Rails book dealing MVC architecture in Rails]&lt;br /&gt;
:This is a free download of pdf format of a book “Build your own Ruby on rails applications” by Patrick Lenz. This free pdf download expires by initial days of December//'2007//. This book provides a very wonderful development from the basics of Ruby to Ruby on Rails(RoR) and the MVC architecture explained and shown how it is embedded in RoR. This comes in conjunction with easy to learn illustrations&lt;br /&gt;
 &lt;br /&gt;
;*[http://www.15seconds.com/issue/060817.htm MVC in ASP .Net]&lt;br /&gt;
:The site provides a detailed but a simple overview of Model View Architecture with ASP.Net. It has pictorial representation of the MVC Framework. The picture will help the user to see the implementation of MVC and helps provide understanding of interactions present in MVC. Moreover there is an example of simple web site development to authenticate the user’s name and password by comparing the data with the database.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.tonymarston.net/php-mysql/infrastructure.html#mvc MVC in PHP]&lt;br /&gt;
:The website explains the application of MVC’s 3 Tier architecture for web development using PHP. It gives a comprehensive view of how to blend MVC architecture with Object oriented capabilities of PHP. It highlights the importance of reusability of code which is one of the most important advantages of MVC architecture.&lt;br /&gt;
&lt;br /&gt;
;*[http://msdn2.microsoft.com/en-us/library/ms978748.aspx MVC explained by MSDN]&lt;br /&gt;
:This site will help a new user to realize the importance of Model View Architecture. It mentions the problems faced by programmer who do not implement this 3 tier architecture and how the problems are resolved using MVC architecture. There is a section where they discussed about the testability which is greatly enhanced by employing this architecture. It also contains information about its benefits and liabilities.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.ifi.unizh.ch/richter/Classes/oose2/03_mvc/02_mvc_java/02_mvc_java.html#4%20Models%20as%20Proxies MVC architecture in Java Swing]&lt;br /&gt;
:This site is an extension to earlier site and provides detailed explanation about the usage of MVC architecture in Java’s Swing. This site is for the advanced users who need to apply MVC in visual programming.&lt;br /&gt;
&lt;br /&gt;
;*[http://images.google.com/imgres?imgurl=http://publib.boulder.ibm.com/infocenter/wsadhelp/v5r1m2/topic/com.ibm.etools.struts.doc/images/cstrdoc018.gif&amp;amp;imgrefurl=http://publib.boulder.ibm.com/infocenter/wsadhelp/v5r1m2/topic/com.ibm.etools.struts.doc/topics/cstrdoc001.html&amp;amp;h=322&amp;amp;w=628&amp;amp;sz=30&amp;amp;hl=en&amp;amp;start=2&amp;amp;um=1&amp;amp;tbnid=tVyYlnDiTkYQbM:&amp;amp;tbnh=70&amp;amp;tbnw=137&amp;amp;prev=/images%3Fq%3DMVC%2B%2Bdesign%2Bpattern%26svnum%3D10%26um%3D1%26hl%3Den%26sa%3DX Google Image explaining MVC in Java]&lt;br /&gt;
:This provides pictorial representation of applications of MVC in Java. It contains images along with explanation for the MVC pattern used in Java explaining MVC and how is it integrated with JSP and struts in Java. &lt;br /&gt;
&lt;br /&gt;
;*[http://www.codeproject.com/useritems/AJAX_MVC.asp?df=100&amp;amp;forumid=362797&amp;amp;exp=0&amp;amp;select=1797776 MVC in .NET and AJAX]&lt;br /&gt;
:This site discusses MVC usage in web based development particularly in .NET and AJAX framework. &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
The sites mentioned above are very useful for several programmers such Java, PHP, Smalltalk programmers. It provides a background for new users who would like to implement design patterns hand in hand with software engineering techniques. &lt;br /&gt;
Most of the sites explain the MVC as a part of implementation of MVC in their specific software or application. Only a few sites actually deal with the concept illustrating it in a lucid way with simple instructional examples.&lt;/div&gt;</summary>
		<author><name>Schinni</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=Http:/pg.ece.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2007/wiki2_3_77&amp;diff=7875</id>
		<title>Http:/pg.ece.ncsu.edu/mediawiki/index.php/CSC/ECE 517 Fall 2007/wiki2 3 77</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Http:/pg.ece.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2007/wiki2_3_77&amp;diff=7875"/>
		<updated>2007-10-28T05:29:36Z</updated>

		<summary type="html">&lt;p&gt;Schinni: /* Introduction to Model/View/Controller (MVC) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Model/View/Controller Websites Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Topic ===&lt;br /&gt;
----&lt;br /&gt;
Model/view/controller. There are literally hundreds of pages describing MVC on the Web. If someone wants to learn about it, what should (s)he do? Look at the first few hits in Google? I expect we can do better than that. Write a review of the MVC sites on the Web. Which are best for learning about the concept? Which have the most instructive examples? Which are best for explaining how to use the pattern in Ruby and Java? If you choose this topic, you should be sure to peruse at least several dozen sites.&lt;br /&gt;
&lt;br /&gt;
=== Introduction to Model/View/Controller (MVC)===&lt;br /&gt;
----&lt;br /&gt;
This is an architectural pattern adopted in software engineering. Generally, complex computer applications deal with large amount of data in conjunction with the functionality accessing this data. This generally becomes difficult to handle. Hence the programmer prefers to separate the functionality and data (model) from the user interface (view). This technique is very useful since any changes made to user interface may not affect the functionality of the program and vice versa.  The data may be reorganized without making any changes in user interface. This is accomplished by decoupling data access from data presentation and user interface by the introduction of an intermediate component named controller.&lt;br /&gt;
&lt;br /&gt;
The application is decoupled into three layers that would allow flexibility and reuse: &lt;br /&gt;
&lt;br /&gt;
'''Model:''' This is the domain-specific representation of information where the application operates. It knows about all the operations that can be used to transform this information. But it has no idea how these operations are invoked.&lt;br /&gt;
&lt;br /&gt;
'''Controller:''' This layer responds to the user (user inputs) which may invoke changes on the model. More specifically as mentioned by “Martin Fowler” in his book “Patterns of Enterprise Application Architecture” in a lucid way “Controller takes user input, manipulates the model and causes the view to update properly”&lt;br /&gt;
&lt;br /&gt;
'''View:''' This layer provides the user interface element. This is the user-visible view of the model where the information is presented in a domain-specific and user-friendly way.&lt;br /&gt;
&lt;br /&gt;
The MVC architectural pattern is very useful for the purpose of web development applications. One of the main purpose it serves is the separation of concerns. Hence, code is cleaner and easier to understand. The other advantage is reusability. The model can be enhanced in order to improve the functionality of the code with very minimal changes to the controller or view. &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Websites categorized ===&lt;br /&gt;
&lt;br /&gt;
There are many sites available online which are very useful to a newbie. Some of the websites we have come across helps a new user to get a proper pictorial representation and conceptual view of architectural pattern and can understand the interaction between the different layers (i.e. model, controller and view). The websites can be categorized into two broad divisions, &amp;quot;Basic Concept&amp;quot; and &amp;quot;Implementation-Specific&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;Basic Concept&amp;quot; Websites====&lt;br /&gt;
&lt;br /&gt;
Websites dealing with the concept of MVC as design pattern rather than an architecture basis used for implementing a particular programming language:&lt;br /&gt;
;*[http://www.phpwact.org/pattern/model_view_controller MVC overview]&lt;br /&gt;
:This site provides a detailed overview of MVC pattern. It explains the different layers and relationship among them. It discusses the importance of structuring views, controllers and models.  It contains information about the benefits and drawbacks of MVC along with the irrelevant situations where MVC will not be helpful.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.enode.com/x/markup/tutorial/mvc.html Exemplary overview of MVC]&lt;br /&gt;
:This site is perfect for the new users who want to have a clear idea of the MVC architecture. They have explained it by taking an example of spinner component that consists of text box and 2 buttons which can be used to increase or decrease the value is the text box.&lt;br /&gt;
&lt;br /&gt;
;*[http://articles.techrepublic.com.com/5100-22-1049862.html Tech Republic Article on MVC]&lt;br /&gt;
:Articles in Tech Republic that explain in a lucid way the MVC pattern, where it is best used and couple of its disadvantages.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.adobe.com/devnet/flash/articles/mv_controller.html MVC throughly dealt]&lt;br /&gt;
:This site has a detailed description of the MVC and its abstract working explained in detail. Though it is actually a chapter from textbook referring rarely to previous chapters , it gives a very detailed( in fact most detailed description of MVC with simple examples along with advantages of each feature of the MVC design pattern.&lt;br /&gt;
[[Image:Adobe_MVC.gif]]&lt;br /&gt;
Example Description: Clock &lt;br /&gt;
&lt;br /&gt;
;*[http://www.kvcindia.com/mvc.htm Another MVC overview]&lt;br /&gt;
:The site is important for understanding the basics of MVC architecture. It provides an explanation about the advantages of using MVC architecture. &lt;br /&gt;
&lt;br /&gt;
;*[http://livedocs.adobe.com/flash/9.0/UsingFlash/help.html?content=WSd60f23110762d6b883b18f10cb1fe1af6-7b36.html MVC defined]&lt;br /&gt;
:It defines the MVC design pattern and explains the concept and how it helps simplifies the developer’s work and also improves the maintainability of the code&lt;br /&gt;
&lt;br /&gt;
;*[http://ist.berkeley.edu/as/ag/pub/pdf/mvc-seminar.pdf Seminar pdf on MVC]&lt;br /&gt;
:This the pdf of a MVC seminar used by UC Berkeley. Though not descriptive it gives a bird eye view of MVC operates along with a simple example.&lt;br /&gt;
&lt;br /&gt;
;*[http://cristobal.baray.com/indiana/projects/mvc.html MVC importance]&lt;br /&gt;
:This site is very useful for understanding the importance of design patterns such as MVC and its importance in developing applications with an example. The site discusses how to use applets in order to provide better interface to the user. It also suggests further helpful reading that would help the user to strengthen their base in the understanding of design patterns.&lt;br /&gt;
&lt;br /&gt;
;*[http://en.wikipedia.org/wiki/Model-view-controller Wiki entry on MVC]&lt;br /&gt;
:This link is the Wiki entry for MVC providing its description and various links to MVC implementations in different programming languages.&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;Implementation Specific&amp;quot; Websites ====&lt;br /&gt;
The following sites illustrate the implementation of MVC in different programming languages like SmallTalk (MVC was originally created for this), Java, Ruby, ASP .NET etc.&lt;br /&gt;
&lt;br /&gt;
;*[http://st-www.cs.uiuc.edu/users/smarch/st-docs/mvc.html MVC architecture First Proposal] &lt;br /&gt;
:This provides the paper by Steve Burbeck, who initially proposed the concept of MVC for Small Talk programming. It provides overview of how to use to MVC for application programming in Smalltalk. It discusses the communication within and between the 3 layers of MVC.  It contains information about existing view hierarchy. Some of the existing views are browsers inspectors and debuggers.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.csis.pace.edu/~bergin/mvc/mvcgui.html MVC implemented in Java]&lt;br /&gt;
:This site gives a simple example of Temperature Control system implemented in java using the Observer and Observable ( these classes have been defined in java in order to implement the MVC architecture in Java)  .This site explains in a very instructional way of how to implement MVC in java.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.developer.com/java/ent/article.php/3336761 MVC in Java GUI applications]&lt;br /&gt;
:This site highlights the importance of MVC patterns and its application in many GUI-based applications, client interfaces, and widget toolkits for manipulating and storing data for the end users. Java’s Swing toolkit is a perfect example. The site explains the implementation of MVC in swing. It provides a listing of all components in the model interface. There is a sample code that would help a user to see the functionality of all examples.&lt;br /&gt;
&lt;br /&gt;
;*[http://java.sun.com/blueprints/patterns/MVC-detailed.html Sun description of MVC]&lt;br /&gt;
:This poses a simple situation where the MVC design pattern can be applied and used to solve the problem using JSP’s to render the views, Servlets as controllers, EJB as models&lt;br /&gt;
&lt;br /&gt;
;*[http://www.regdeveloper.co.uk/2006/07/17/ruby_rails_part2/ MVC example in Ruby on Rails]&lt;br /&gt;
:This is a very detailed instructional tutorial aimed at developing a MVC CRUD (Create, Read, Update, Delete) application in Ruby on Rails&lt;br /&gt;
&lt;br /&gt;
;*[http://blogs.ittoolbox.com/emergingtech/edge/archives/mvc-and-rails-12457 Blog on MVC in Ruby on Rails]&lt;br /&gt;
:This is a blog entry on MVC through the viewpoint of a Ruby on Rails developer defining MVC and giving minor details as to how MVC is implemented in Ruby on Rails.&lt;br /&gt;
&lt;br /&gt;
;*[http://wiki.rubyonrails.org/rails/pages/UnderstandingRailsMVC MVC in Rails explained in rubyonrails.org]&lt;br /&gt;
:This is an article on the Ruby on Rails official website defining the MVC usage in Rails along with links to articles within the same website for better understanding of MVC.&lt;br /&gt;
&lt;br /&gt;
;*[http://s3.amazonaws.com/sitepoint-books/ror.pdf Rails book dealing MVC architecture in Rails]&lt;br /&gt;
:This is a free download of pdf format of a book “Build your own Ruby on rails applications” by Patrick Lenz. This free pdf download expires by initial days of December//'2007//. This book provides a very wonderful development from the basics of Ruby to Ruby on Rails(RoR) and the MVC architecture explained and shown how it is embedded in RoR. This comes in conjunction with easy to learn illustrations&lt;br /&gt;
 &lt;br /&gt;
;*[http://www.15seconds.com/issue/060817.htm MVC in ASP .Net]&lt;br /&gt;
:The site provides a detailed but a simple overview of Model View Architecture with ASP.Net. It has pictorial representation of the MVC Framework. The picture will help the user to see the implementation of MVC and helps provide understanding of interactions present in MVC. Moreover there is an example of simple web site development to authenticate the user’s name and password by comparing the data with the database.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.tonymarston.net/php-mysql/infrastructure.html#mvc MVC in PHP]&lt;br /&gt;
:The website explains the application of MVC’s 3 Tier architecture for web development using PHP. It gives a comprehensive view of how to blend MVC architecture with Object oriented capabilities of PHP. It highlights the importance of reusability of code which is one of the most important advantages of MVC architecture.&lt;br /&gt;
&lt;br /&gt;
;*[http://msdn2.microsoft.com/en-us/library/ms978748.aspx MVC explained by MSDN]&lt;br /&gt;
:This site will help a new user to realize the importance of Model View Architecture. It mentions the problems faced by programmer who do not implement this 3 tier architecture and how the problems are resolved using MVC architecture. There is a section where they discussed about the testability which is greatly enhanced by employing this architecture. It also contains information about its benefits and liabilities.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.ifi.unizh.ch/richter/Classes/oose2/03_mvc/02_mvc_java/02_mvc_java.html#4%20Models%20as%20Proxies MVC architecture in Java Swing]&lt;br /&gt;
:This site is an extension to earlier site and provides detailed explanation about the usage of MVC architecture in Java’s Swing. This site is for the advanced users who need to apply MVC in visual programming.&lt;br /&gt;
&lt;br /&gt;
;*[http://images.google.com/imgres?imgurl=http://publib.boulder.ibm.com/infocenter/wsadhelp/v5r1m2/topic/com.ibm.etools.struts.doc/images/cstrdoc018.gif&amp;amp;imgrefurl=http://publib.boulder.ibm.com/infocenter/wsadhelp/v5r1m2/topic/com.ibm.etools.struts.doc/topics/cstrdoc001.html&amp;amp;h=322&amp;amp;w=628&amp;amp;sz=30&amp;amp;hl=en&amp;amp;start=2&amp;amp;um=1&amp;amp;tbnid=tVyYlnDiTkYQbM:&amp;amp;tbnh=70&amp;amp;tbnw=137&amp;amp;prev=/images%3Fq%3DMVC%2B%2Bdesign%2Bpattern%26svnum%3D10%26um%3D1%26hl%3Den%26sa%3DX Google Image explaining MVC in Java]&lt;br /&gt;
:This provides pictorial representation of applications of MVC in Java. It contains images along with explanation for the MVC pattern used in Java explaining MVC and how is it integrated with JSP and struts in Java. &lt;br /&gt;
&lt;br /&gt;
;*[http://www.codeproject.com/useritems/AJAX_MVC.asp?df=100&amp;amp;forumid=362797&amp;amp;exp=0&amp;amp;select=1797776 MVC in .NET and AJAX]&lt;br /&gt;
:This site discusses MVC usage in web based development particularly in .NET and AJAX framework. &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
The sites mentioned above are very useful for several programmers such Java, PHP, Smalltalk programmers. It provides a background for new users who would like to implement design patterns hand in hand with software engineering techniques. &lt;br /&gt;
Most of the sites explain the MVC as a part of implementation of MVC in their specific software or application. Only a few sites actually deal with the concept illustrating it in a lucid way with simple instructional examples.&lt;/div&gt;</summary>
		<author><name>Schinni</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=Http:/pg.ece.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2007/wiki2_3_77&amp;diff=7438</id>
		<title>Http:/pg.ece.ncsu.edu/mediawiki/index.php/CSC/ECE 517 Fall 2007/wiki2 3 77</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Http:/pg.ece.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2007/wiki2_3_77&amp;diff=7438"/>
		<updated>2007-10-24T20:58:02Z</updated>

		<summary type="html">&lt;p&gt;Schinni: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Model/View/Controller Websites Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Topic ===&lt;br /&gt;
----&lt;br /&gt;
Model/view/controller. There are literally hundreds of pages describing MVC on the Web. If someone wants to learn about it, what should (s)he do? Look at the first few hits in Google? I expect we can do better than that. Write a review of the MVC sites on the Web. Which are best for learning about the concept? Which have the most instructive examples? Which are best for explaining how to use the pattern in Ruby and Java? If you choose this topic, you should be sure to peruse at least several dozen sites.&lt;br /&gt;
&lt;br /&gt;
=== Introduction to Model/View/Controller (MVC)===&lt;br /&gt;
----&lt;br /&gt;
This is an architectural pattern adopted in software engineering. Generally, complex computer applications deal with large amount of data in conjunction with the functionality accessing this data which becomes difficult to handle. Hence the programmer likes to separate the functionality and data (model) from the user interface (view). This technique is very useful since any changes made to user interface may not affect the functionality of the program and vice versa.  The data may be reorganized without making any changes in user interface and this is accomplished by decoupling data access from data presentation and user interface by the introduction of an intermediate component named controller.&lt;br /&gt;
&lt;br /&gt;
The application is decoupled into three layers that would allow flexibility and reuse: &lt;br /&gt;
&lt;br /&gt;
'''Model:''' This is the domain-specific representation of information where the application operates. It knows about all the operations that can be used to transform this information. But it has no idea how these operations are invoked. (done from View)&lt;br /&gt;
&lt;br /&gt;
'''Controller:''' This layer responds the user (user inputs) and that may invoke changes on the model. More specifically as mentioned by “Martin Fowler” in his “Patterns of Enterprise Application Architecture” in a lucid way “Controller takes user input, manipulates the model and causes the view to update properly”&lt;br /&gt;
&lt;br /&gt;
'''View:''' This layer provides the user interface element. This is the presentational view of the model where the information is presented in a domain-specific and user-friendly way.&lt;br /&gt;
&lt;br /&gt;
The MVC architectural pattern is very useful for the purpose of web development applications. First advantage is the separation of concerns. Hence, code is cleaner and easier to understand. Another and more important advantage is reusability. The model can be enhanced in order to improve the functionality of the code with very minimal changes to the controller or view. &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=== Websites categorized ===&lt;br /&gt;
&lt;br /&gt;
There are many sites available online which are very useful to a newbie. Some of the websites we have come across helps a new user to get a proper pictorial representation and conceptual view of architectural pattern and can understand the interaction between the different layers (i.e. model, controller and view). The websites can be categorized into two broad divisions, &amp;quot;Basic Concept&amp;quot; and &amp;quot;Implementation-Specific&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;Basic Concept&amp;quot; Websites====&lt;br /&gt;
&lt;br /&gt;
Websites dealing with the concept of MVC as design pattern rather than an architecture basis used for implementing a particular programming language:&lt;br /&gt;
;*[http://www.phpwact.org/pattern/model_view_controller MVC overview]&lt;br /&gt;
:This site provides a detailed overview of MVC pattern. It explains the different layers and relationship among them. It discusses the importance of structuring views, controllers and models.  It contains information about the benefits and drawbacks of MVC along with the irrelevant situations where MVC will not be helpful.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.enode.com/x/markup/tutorial/mvc.html Exemplary overview of MVC]&lt;br /&gt;
:This site is perfect for the new users who want to have a clear idea of the MVC architecture. They have explained it by taking an example of spinner component that consists of text box and 2 buttons which can be used to increase or decrease the value is the text box.&lt;br /&gt;
&lt;br /&gt;
;*[http://articles.techrepublic.com.com/5100-22-1049862.html Tech Republic Article on MVC]&lt;br /&gt;
:Articles in Tech Republic that explain in a lucid way the MVC pattern, where it is best used and couple of its disadvantages.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.adobe.com/devnet/flash/articles/mv_controller.html MVC throughly dealt]&lt;br /&gt;
:This site has a detailed description of the MVC and its abstract working explained in detail. Though it is actually a chapter from textbook referring rarely to previous chapters , it gives a very detailed( in fact most detailed description of MVC with simple examples along with advantages of each feature of the MVC design pattern.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.kvcindia.com/mvc.htm Another MVC overview]&lt;br /&gt;
:The site is important for understanding the basics of MVC architecture. It provides an explanation about the advantages of using MVC architecture. &lt;br /&gt;
&lt;br /&gt;
;*[http://livedocs.adobe.com/flash/9.0/UsingFlash/help.html?content=WSd60f23110762d6b883b18f10cb1fe1af6-7b36.html MVC defined]&lt;br /&gt;
:It defines the MVC design pattern and explains the concept and how it helps simplifies the developer’s work and also improves the maintainability of the code&lt;br /&gt;
&lt;br /&gt;
;*[http://ist.berkeley.edu/as/ag/pub/pdf/mvc-seminar.pdf Seminar pdf on MVC]&lt;br /&gt;
:This the pdf of a MVC seminar used by UC Berkeley. Though not descriptive it gives a bird eye view of MVC operates along with a simple example.&lt;br /&gt;
&lt;br /&gt;
;*[http://cristobal.baray.com/indiana/projects/mvc.html MVC importance]&lt;br /&gt;
:This site is very useful for understanding the importance of design patterns such as MVC and its importance in developing applications with an example. The site discusses how to use applets in order to provide better interface to the user. It also suggests further helpful reading that would help the user to strengthen their base in the understanding of design patterns.&lt;br /&gt;
&lt;br /&gt;
;*[http://en.wikipedia.org/wiki/Model-view-controller Wiki entry on MVC]&lt;br /&gt;
:This link is the Wiki entry for MVC providing its description and various links to MVC implementations in different programming languages.&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;Implementation Specific&amp;quot; Websites ====&lt;br /&gt;
The following sites illustrate the implementation of MVC in different programming languages like SmallTalk (MVC was originally created for this), Java, Ruby, ASP .NET etc.&lt;br /&gt;
&lt;br /&gt;
;*[http://st-www.cs.uiuc.edu/users/smarch/st-docs/mvc.html MVC architecture First Proposal] &lt;br /&gt;
:This provides the paper by Steve Burbeck, who initially proposed the concept of MVC for Small Talk programming. It provides overview of how to use to MVC for application programming in Smalltalk. It discusses the communication within and between the 3 layers of MVC.  It contains information about existing view hierarchy. Some of the existing views are browsers inspectors and debuggers.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.csis.pace.edu/~bergin/mvc/mvcgui.html MVC implemented in Java]&lt;br /&gt;
:This site gives a simple example of Temperature Control system implemented in java using the Observer and Observable ( these classes have been defined in java in order to implement the MVC architecture in Java)  .This site explains in a very instructional way of how to implement MVC in java.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.developer.com/java/ent/article.php/3336761 MVC in Java GUI applications]&lt;br /&gt;
:This site highlights the importance of MVC patterns and its application in many GUI-based applications, client interfaces, and widget toolkits for manipulating and storing data for the end users. Java’s Swing toolkit is a perfect example. The site explains the implementation of MVC in swing. It provides a listing of all components in the model interface. There is a sample code that would help a user to see the functionality of all examples.&lt;br /&gt;
&lt;br /&gt;
;*[http://java.sun.com/blueprints/patterns/MVC-detailed.html Sun description of MVC]&lt;br /&gt;
:This poses a simple situation where the MVC design pattern can be applied and used to solve the problem using JSP’s to render the views, Servlets as controllers, EJB as models&lt;br /&gt;
&lt;br /&gt;
;*[http://www.regdeveloper.co.uk/2006/07/17/ruby_rails_part2/ MVC example in Ruby on Rails]&lt;br /&gt;
:This is a very detailed instructional tutorial aimed at developing a MVC CRUD (Create, Read, Update, Delete) application in Ruby on Rails&lt;br /&gt;
&lt;br /&gt;
;*[http://blogs.ittoolbox.com/emergingtech/edge/archives/mvc-and-rails-12457 Blog on MVC in Ruby on Rails]&lt;br /&gt;
:This is a blog entry on MVC through the viewpoint of a Ruby on Rails developer defining MVC and giving minor details as to how MVC is implemented in Ruby on Rails.&lt;br /&gt;
&lt;br /&gt;
;*[http://wiki.rubyonrails.org/rails/pages/UnderstandingRailsMVC MVC in Rails explained in rubyonrails.org]&lt;br /&gt;
:This is an article on the Ruby on Rails official website defining the MVC usage in Rails along with links to articles within the same website for better understanding of MVC.&lt;br /&gt;
&lt;br /&gt;
;*[http://s3.amazonaws.com/sitepoint-books/ror.pdf Rails book dealing MVC architecture in Rails]&lt;br /&gt;
:This is a free download of pdf format of a book “Build your own Ruby on rails applications” by Patrick Lenz. This free pdf download expires by initial days of December//'2007//. This book provides a very wonderful development from the basics of Ruby to Ruby on Rails(RoR) and the MVC architecture explained and shown how it is embedded in RoR. This comes in conjunction with easy to learn illustrations&lt;br /&gt;
 &lt;br /&gt;
;*[http://www.15seconds.com/issue/060817.htm MVC in ASP .Net]&lt;br /&gt;
:The site provides a detailed but a simple overview of Model View Architecture with ASP.Net. It has pictorial representation of the MVC Framework. The picture will help the user to see the implementation of MVC and helps provide understanding of interactions present in MVC. Moreover there is an example of simple web site development to authenticate the user’s name and password by comparing the data with the database.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.tonymarston.net/php-mysql/infrastructure.html#mvc MVC in PHP]&lt;br /&gt;
:The website explains the application of MVC’s 3 Tier architecture for web development using PHP. It gives a comprehensive view of how to blend MVC architecture with Object oriented capabilities of PHP. It highlights the importance of reusability of code which is one of the most important advantages of MVC architecture.&lt;br /&gt;
&lt;br /&gt;
;*[http://msdn2.microsoft.com/en-us/library/ms978748.aspx MVC explained by MSDN]&lt;br /&gt;
:This site will help a new user to realize the importance of Model View Architecture. It mentions the problems faced by programmer who do not implement this 3 tier architecture and how the problems are resolved using MVC architecture. There is a section where they discussed about the testability which is greatly enhanced by employing this architecture. It also contains information about its benefits and liabilities.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.ifi.unizh.ch/richter/Classes/oose2/03_mvc/02_mvc_java/02_mvc_java.html#4%20Models%20as%20Proxies MVC architecture in Java Swing]&lt;br /&gt;
:This site is an extension to earlier site and provides detailed explanation about the usage of MVC architecture in Java’s Swing. This site is for the advanced users who need to apply MVC in visual programming.&lt;br /&gt;
&lt;br /&gt;
;*[http://images.google.com/imgres?imgurl=http://publib.boulder.ibm.com/infocenter/wsadhelp/v5r1m2/topic/com.ibm.etools.struts.doc/images/cstrdoc018.gif&amp;amp;imgrefurl=http://publib.boulder.ibm.com/infocenter/wsadhelp/v5r1m2/topic/com.ibm.etools.struts.doc/topics/cstrdoc001.html&amp;amp;h=322&amp;amp;w=628&amp;amp;sz=30&amp;amp;hl=en&amp;amp;start=2&amp;amp;um=1&amp;amp;tbnid=tVyYlnDiTkYQbM:&amp;amp;tbnh=70&amp;amp;tbnw=137&amp;amp;prev=/images%3Fq%3DMVC%2B%2Bdesign%2Bpattern%26svnum%3D10%26um%3D1%26hl%3Den%26sa%3DX Google Image explaining MVC in Java]&lt;br /&gt;
:This provides pictorial representation of applications of MVC in Java. It contains images along with explanation for the MVC pattern used in Java explaining MVC and how is it integrated with JSP and struts in Java. &lt;br /&gt;
&lt;br /&gt;
;*[http://www.codeproject.com/useritems/AJAX_MVC.asp?df=100&amp;amp;forumid=362797&amp;amp;exp=0&amp;amp;select=1797776 MVC in .NET and AJAX]&lt;br /&gt;
:This site discusses MVC usage in web based development particularly in .NET and AJAX framework. &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
The sites mentioned above are very useful for several programmers such Java, PHP, Smalltalk programmers. It provides a background for new users who would like to implement design patterns hand in hand with software engineering techniques. &lt;br /&gt;
Most of the sites explain the MVC as a part of implementation of MVC in their specific software or application. Only a few sites actually deal with the concept illustrating it in a lucid way with simple instructional examples.&lt;/div&gt;</summary>
		<author><name>Schinni</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=Http:/pg.ece.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2007/wiki2_3_77&amp;diff=7437</id>
		<title>Http:/pg.ece.ncsu.edu/mediawiki/index.php/CSC/ECE 517 Fall 2007/wiki2 3 77</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Http:/pg.ece.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2007/wiki2_3_77&amp;diff=7437"/>
		<updated>2007-10-24T20:57:34Z</updated>

		<summary type="html">&lt;p&gt;Schinni: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Model/View/Controller Websites Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Topic ===&lt;br /&gt;
----&lt;br /&gt;
Model/view/controller. There are literally hundreds of pages describing MVC on the Web. If someone wants to learn about it, what should (s)he do? Look at the first few hits in Google? I expect we can do better than that. Write a review of the MVC sites on the Web. Which are best for learning about the concept? Which have the most instructive examples? Which are best for explaining how to use the pattern in Ruby and Java? If you choose this topic, you should be sure to peruse at least several dozen sites.&lt;br /&gt;
&lt;br /&gt;
=== Introduction to Model/View/Controller (MVC)===&lt;br /&gt;
----&lt;br /&gt;
This is an architectural pattern adopted in software engineering. Generally, complex computer applications deal with large amount of data in conjunction with the functionality accessing this data which becomes difficult to handle. Hence the programmer likes to separate the functionality and data (model) from the user interface (view). This technique is very useful since any changes made to user interface may not affect the functionality of the program and vice versa.  The data may be reorganized without making any changes in user interface and this is accomplished by decoupling data access from data presentation and user interface by the introduction of an intermediate component named controller.&lt;br /&gt;
&lt;br /&gt;
The application is decoupled into three layers that would allow flexibility and reuse: &lt;br /&gt;
&lt;br /&gt;
'''Model:''' This is the domain-specific representation of information where the application operates. It knows about all the operations that can be used to transform this information. But it has no idea how these operations are invoked. (done from View)&lt;br /&gt;
&lt;br /&gt;
'''Controller:''' This layer responds the user (user inputs) and that may invoke changes on the model. More specifically as mentioned by “Martin Fowler” in his “Patterns of Enterprise Application Architecture” in a lucid way “Controller takes user input, manipulates the model and causes the view to update properly”&lt;br /&gt;
&lt;br /&gt;
'''View:''' This layer provides the user interface element. This is the presentational view of the model where the information is presented in a domain-specific and user-friendly way.&lt;br /&gt;
&lt;br /&gt;
The MVC architectural pattern is very useful for the purpose of web development applications. First advantage is the separation of concerns. Hence, code is cleaner and easier to understand. Another and more important advantage is reusability. The model can be enhanced in order to improve the functionality of the code with very minimal changes to the controller or view. &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=== Websites categorized ===&lt;br /&gt;
&lt;br /&gt;
There are many sites available online which are very useful to a newbie. Some of the websites we have come across helps a new user to get a proper pictorial representation and conceptual view of architectural pattern and can understand the interaction between the different layers (i.e. model, controller and view). The websites can be categorized into two broad divisions, &amp;quot;Basic Concept&amp;quot; and &amp;quot;Implementation-Specific&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;Basic Concept&amp;quot; Websites====&lt;br /&gt;
&lt;br /&gt;
Websites dealing with the concept of MVC as design pattern rather than an architecture basis used for implementing a particular programming language:&lt;br /&gt;
;*[http://www.phpwact.org/pattern/model_view_controller MVC overview]&lt;br /&gt;
:This site provides a detailed overview of MVC pattern. It explains the different layers and relationship among them. It discusses the importance of structuring views, controllers and models.  It contains information about the benefits and drawbacks of MVC along with the irrelevant situations where MVC will not be helpful.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.enode.com/x/markup/tutorial/mvc.html Exemplary overview of MVC]&lt;br /&gt;
:This site is perfect for the new users who want to have a clear idea of the MVC architecture. They have explained it by taking an example of spinner component that consists of text box and 2 buttons which can be used to increase or decrease the value is the text box.&lt;br /&gt;
&lt;br /&gt;
;*[http://articles.techrepublic.com.com/5100-22-1049862.html Tech Republic Article on MVC]&lt;br /&gt;
:Articles in Tech Republic that explain in a lucid way the MVC pattern, where it is best used and couple of its disadvantages.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.adobe.com/devnet/flash/articles/mv_controller.html MVC throughly dealt]&lt;br /&gt;
:This site has a detailed description of the MVC and its abstract working explained in detail. Though it is actually a chapter from textbook referring rarely to previous chapters , it gives a very detailed( in fact most detailed description of MVC with simple examples along with advantages of each feature of the MVC design pattern.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.kvcindia.com/mvc.htm Another MVC overview]&lt;br /&gt;
:The site is important for understanding the basics of MVC architecture. It provides an explanation about the advantages of using MVC architecture. &lt;br /&gt;
&lt;br /&gt;
;*[http://livedocs.adobe.com/flash/9.0/UsingFlash/help.html?content=WSd60f23110762d6b883b18f10cb1fe1af6-7b36.html MVC defined]&lt;br /&gt;
:It defines the MVC design pattern and explains the concept and how it helps simplifies the developer’s work and also improves the maintainability of the code&lt;br /&gt;
&lt;br /&gt;
;*[http://ist.berkeley.edu/as/ag/pub/pdf/mvc-seminar.pdf Seminar pdf on MVC]&lt;br /&gt;
:This the pdf of a MVC seminar used by UC Berkeley. Though not descriptive it gives a bird eye view of MVC operates along with a simple example.&lt;br /&gt;
&lt;br /&gt;
;*[http://cristobal.baray.com/indiana/projects/mvc.html MVC importance]&lt;br /&gt;
:This site is very useful for understanding the importance of design patterns such as MVC and its importance in developing applications with an example. The site discusses how to use applets in order to provide better interface to the user. It also suggests further helpful reading that would help the user to strengthen their base in the understanding of design patterns.&lt;br /&gt;
&lt;br /&gt;
;*[http://en.wikipedia.org/wiki/Model-view-controller Wiki entry on MVC]&lt;br /&gt;
:This link is the Wiki entry for MVC providing its description and various links to MVC implementations in different programming languages.&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;Implementation Specific&amp;quot; Websites ====&lt;br /&gt;
The following sites illustrate the implementation of MVC in different programming languages like SmallTalk (MVC was originally created for this), Java, Ruby, ASP .NET etc.&lt;br /&gt;
&lt;br /&gt;
;*[http://st-www.cs.uiuc.edu/users/smarch/st-docs/mvc.html MVC architecture First Proposal] &lt;br /&gt;
:This provides the paper by Steve Burbeck, who initially proposed the concept of MVC for Small Talk programming. It provides overview of how to use to MVC for application programming in Smalltalk. It discusses the communication within and between the 3 layers of MVC.  It contains information about existing view hierarchy. Some of the existing views are browsers inspectors and debuggers.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.csis.pace.edu/~bergin/mvc/mvcgui.html MVC implemented in Java]&lt;br /&gt;
:This site gives a simple example of Temperature Control system implemented in java using the Observer and Observable ( these classes have been defined in java in order to implement the MVC architecture in Java)  .This site explains in a very instructional way of how to implement MVC in java.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.developer.com/java/ent/article.php/3336761 MVC in Java GUI applications]&lt;br /&gt;
:This site highlights the importance of MVC patterns and its application in many GUI-based applications, client interfaces, and widget toolkits for manipulating and storing data for the end users. Java’s Swing toolkit is a perfect example. The site explains the implementation of MVC in swing. It provides a listing of all components in the model interface. There is a sample code that would help a user to see the functionality of all examples.&lt;br /&gt;
&lt;br /&gt;
;*[http://java.sun.com/blueprints/patterns/MVC-detailed.html Sun description of MVC]&lt;br /&gt;
:This poses a simple situation where the MVC design pattern can be applied and used to solve the problem using JSP’s to render the views, Servlets as controllers, EJB as models&lt;br /&gt;
&lt;br /&gt;
;*[http://www.regdeveloper.co.uk/2006/07/17/ruby_rails_part2/ MVC example in Ruby on Rails]&lt;br /&gt;
:This is a very detailed instructional tutorial aimed at developing a MVC CRUD (Create, Read, Update, Delete) application in Ruby on Rails&lt;br /&gt;
&lt;br /&gt;
;*[http://blogs.ittoolbox.com/emergingtech/edge/archives/mvc-and-rails-12457 Blog on MVC in Ruby on Rails]&lt;br /&gt;
:This is a blog entry on MVC through the viewpoint of a Ruby on Rails developer defining MVC and giving minor details as to how MVC is implemented in Ruby on Rails.&lt;br /&gt;
&lt;br /&gt;
;*[http://wiki.rubyonrails.org/rails/pages/UnderstandingRailsMVC MVC in Rails explained in rubyonrails.org]&lt;br /&gt;
:This is an article on the Ruby on Rails official website defining the MVC usage in Rails along with links to articles within the same website for better understanding of MVC.&lt;br /&gt;
&lt;br /&gt;
;*[http://s3.amazonaws.com/sitepoint-books/ror.pdf Rails book dealing MVC architecture in Rails]&lt;br /&gt;
:This is a free download of pdf format of a book “Build your own Ruby on rails applications” by Patrick Lenz. This free pdf download expires by initial days of December//'2007//. This book provides a very wonderful development from the basics of Ruby to Ruby on Rails(RoR) and the MVC architecture explained and shown how it is embedded in RoR. This comes in conjunction with easy to learn illustrations&lt;br /&gt;
 &lt;br /&gt;
;*[http://www.15seconds.com/issue/060817.htm MVC in ASP .Net]&lt;br /&gt;
:The site provides a detailed but a simple overview of Model View Architecture with ASP.Net. It has pictorial representation of the MVC Framework. The picture will help the user to see the implementation of MVC and helps provide understanding of interactions present in MVC. Moreover there is an example of simple web site development to authenticate the user’s name and password by comparing the data with the database.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.tonymarston.net/php-mysql/infrastructure.html#mvc MVC in PHP]&lt;br /&gt;
:The website explains the application of MVC’s 3 Tier architecture for web development using PHP. It gives a comprehensive view of how to blend MVC architecture with Object oriented capabilities of PHP. It highlights the importance of reusability of code which is one of the most important advantages of MVC architecture.&lt;br /&gt;
&lt;br /&gt;
;*[http://msdn2.microsoft.com/en-us/library/ms978748.aspx MVC explained by MSDN]&lt;br /&gt;
:This site will help a new user to realize the importance of Model View Architecture. It mentions the problems faced by programmer who do not implement this 3 tier architecture and how the problems are resolved using MVC architecture. There is a section where they discussed about the testability which is greatly enhanced by employing this architecture. It also contains information about its benefits and liabilities.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.ifi.unizh.ch/richter/Classes/oose2/03_mvc/02_mvc_java/02_mvc_java.html#4%20Models%20as%20Proxies MVC architecture in Java Swing]&lt;br /&gt;
:This site is an extension to earlier site and provides detailed explanation about the usage of MVC architecture in Java’s Swing. This site is for the advanced users who need to apply MVC in visual programming.&lt;br /&gt;
&lt;br /&gt;
;*[http://images.google.com/imgres?imgurl=http://publib.boulder.ibm.com/infocenter/wsadhelp/v5r1m2/topic/com.ibm.etools.struts.doc/images/cstrdoc018.gif&amp;amp;imgrefurl=http://publib.boulder.ibm.com/infocenter/wsadhelp/v5r1m2/topic/com.ibm.etools.struts.doc/topics/cstrdoc001.html&amp;amp;h=322&amp;amp;w=628&amp;amp;sz=30&amp;amp;hl=en&amp;amp;start=2&amp;amp;um=1&amp;amp;tbnid=tVyYlnDiTkYQbM:&amp;amp;tbnh=70&amp;amp;tbnw=137&amp;amp;prev=/images%3Fq%3DMVC%2B%2Bdesign%2Bpattern%26svnum%3D10%26um%3D1%26hl%3Den%26sa%3DX Google Image explaining MVC in Java]&lt;br /&gt;
:This provides pictorial representation of applications of MVC in Java. It contains images along with explanation for the MVC pattern used in Java explaining MVC and how is it integrated with JSP and struts in Java. &lt;br /&gt;
&lt;br /&gt;
;*[http://www.codeproject.com/useritems/AJAX_MVC.asp?df=100&amp;amp;forumid=362797&amp;amp;exp=0&amp;amp;select=1797776 MVC in .NET and AJAX]&lt;br /&gt;
:This site discusses MVC usage in web based development particularly in .NET and AJAX framework. &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
The sites mentioned above are very useful for several programmers such Java, PHP, Smalltalk programmers. It provides a background for new users who would like to implement design patterns hand in hand with software engineering techniques. &lt;br /&gt;
Most of the sites explain the MVC as a part of implementation of MVC in their specific software or application. Only a few sites actually deal with the concept illustrating it in a lucid way with simple instructional examples.&lt;br /&gt;
[[Image:[[Image:Example.jpg]][[Image:Example.jpg]]]]&lt;/div&gt;</summary>
		<author><name>Schinni</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=Http:/pg.ece.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2007/wiki2_3_77&amp;diff=7435</id>
		<title>Http:/pg.ece.ncsu.edu/mediawiki/index.php/CSC/ECE 517 Fall 2007/wiki2 3 77</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Http:/pg.ece.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2007/wiki2_3_77&amp;diff=7435"/>
		<updated>2007-10-24T20:55:43Z</updated>

		<summary type="html">&lt;p&gt;Schinni: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Model/View/Controller Websites Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Topic ===&lt;br /&gt;
----&lt;br /&gt;
Model/view/controller. There are literally hundreds of pages describing MVC on the Web. If someone wants to learn about it, what should (s)he do? Look at the first few hits in Google? I expect we can do better than that. Write a review of the MVC sites on the Web. Which are best for learning about the concept? Which have the most instructive examples? Which are best for explaining how to use the pattern in Ruby and Java? If you choose this topic, you should be sure to peruse at least several dozen sites.&lt;br /&gt;
&lt;br /&gt;
=== Introduction to Model/View/Controller (MVC)===&lt;br /&gt;
----&lt;br /&gt;
This is an architectural pattern adopted in software engineering. Generally, complex computer applications deal with large amount of data in conjunction with the functionality accessing this data which becomes difficult to handle. Hence the programmer likes to separate the functionality and data (model) from the user interface (view). This technique is very useful since any changes made to user interface may not affect the functionality of the program and vice versa.  The data may be reorganized without making any changes in user interface and this is accomplished by decoupling data access from data presentation and user interface by the introduction of an intermediate component named controller.&lt;br /&gt;
&lt;br /&gt;
The application is decoupled into three layers that would allow flexibility and reuse: &lt;br /&gt;
&lt;br /&gt;
'''Model:''' This is the domain-specific representation of information where the application operates. It knows about all the operations that can be used to transform this information. But it has no idea how these operations are invoked. (done from View)&lt;br /&gt;
&lt;br /&gt;
'''Controller:''' This layer responds the user (user inputs) and that may invoke changes on the model. More specifically as mentioned by “Martin Fowler” in his “Patterns of Enterprise Application Architecture” in a lucid way “Controller takes user input, manipulates the model and causes the view to update properly”&lt;br /&gt;
&lt;br /&gt;
'''View:''' This layer provides the user interface element. This is the presentational view of the model where the information is presented in a domain-specific and user-friendly way.&lt;br /&gt;
&lt;br /&gt;
The MVC architectural pattern is very useful for the purpose of web development applications. First advantage is the separation of concerns. Hence, code is cleaner and easier to understand. Another and more important advantage is reusability. The model can be enhanced in order to improve the functionality of the code with very minimal changes to the controller or view. &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=== Websites categorized ===&lt;br /&gt;
&lt;br /&gt;
There are many sites available online which are very useful to a newbie. Some of the websites we have come across helps a new user to get a proper pictorial representation and conceptual view of architectural pattern and can understand the interaction between the different layers (i.e. model, controller and view). The websites can be categorized into two broad divisions, &amp;quot;Basic Concept&amp;quot; and &amp;quot;Implementation-Specific&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;Basic Concept&amp;quot; Websites====&lt;br /&gt;
&lt;br /&gt;
Websites dealing with the concept of MVC as design pattern rather than an architecture basis used for implementing a particular programming language:&lt;br /&gt;
;*[http://www.phpwact.org/pattern/model_view_controller MVC overview]&lt;br /&gt;
:This site provides a detailed overview of MVC pattern. It explains the different layers and relationship among them. It discusses the importance of structuring views, controllers and models.  It contains information about the benefits and drawbacks of MVC along with the irrelevant situations where MVC will not be helpful.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.enode.com/x/markup/tutorial/mvc.html Exemplary overview of MVC]&lt;br /&gt;
:This site is perfect for the new users who want to have a clear idea of the MVC architecture. They have explained it by taking an example of spinner component that consists of text box and 2 buttons which can be used to increase or decrease the value is the text box.&lt;br /&gt;
&lt;br /&gt;
;*[http://articles.techrepublic.com.com/5100-22-1049862.html Tech Republic Article on MVC]&lt;br /&gt;
:Articles in Tech Republic that explain in a lucid way the MVC pattern, where it is best used and couple of its disadvantages.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.adobe.com/devnet/flash/articles/mv_controller.html MVC throughly dealt]&lt;br /&gt;
:This site has a detailed description of the MVC and its abstract working explained in detail. Though it is actually a chapter from textbook referring rarely to previous chapters , it gives a very detailed( in fact most detailed description of MVC with simple examples along with advantages of each feature of the MVC design pattern.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.kvcindia.com/mvc.htm Another MVC overview]&lt;br /&gt;
:The site is important for understanding the basics of MVC architecture. It provides an explanation about the advantages of using MVC architecture. &lt;br /&gt;
&lt;br /&gt;
;*[http://livedocs.adobe.com/flash/9.0/UsingFlash/help.html?content=WSd60f23110762d6b883b18f10cb1fe1af6-7b36.html MVC defined]&lt;br /&gt;
:It defines the MVC design pattern and explains the concept and how it helps simplifies the developer’s work and also improves the maintainability of the code&lt;br /&gt;
&lt;br /&gt;
;*[http://ist.berkeley.edu/as/ag/pub/pdf/mvc-seminar.pdf Seminar pdf on MVC]&lt;br /&gt;
:This the pdf of a MVC seminar used by UC Berkeley. Though not descriptive it gives a bird eye view of MVC operates along with a simple example.&lt;br /&gt;
&lt;br /&gt;
;*[http://cristobal.baray.com/indiana/projects/mvc.html MVC importance]&lt;br /&gt;
:This site is very useful for understanding the importance of design patterns such as MVC and its importance in developing applications with an example. The site discusses how to use applets in order to provide better interface to the user. It also suggests further helpful reading that would help the user to strengthen their base in the understanding of design patterns.&lt;br /&gt;
&lt;br /&gt;
;*[http://en.wikipedia.org/wiki/Model-view-controller Wiki entry on MVC]&lt;br /&gt;
:This link is the Wiki entry for MVC providing its description and various links to MVC implementations in different programming languages.&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;Implementation Specific&amp;quot; Websites ====&lt;br /&gt;
The following sites illustrate the implementation of MVC in different programming languages like SmallTalk (MVC was originally created for this), Java, Ruby, ASP .NET etc.&lt;br /&gt;
&lt;br /&gt;
;*[http://st-www.cs.uiuc.edu/users/smarch/st-docs/mvc.html MVC architecture First Proposal] &lt;br /&gt;
:This provides the paper by Steve Burbeck, who initially proposed the concept of MVC for Small Talk programming. It provides overview of how to use to MVC for application programming in Smalltalk. It discusses the communication within and between the 3 layers of MVC.  It contains information about existing view hierarchy. Some of the existing views are browsers inspectors and debuggers.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.csis.pace.edu/~bergin/mvc/mvcgui.html MVC implemented in Java]&lt;br /&gt;
:This site gives a simple example of Temperature Control system implemented in java using the Observer and Observable ( these classes have been defined in java in order to implement the MVC architecture in Java)  .This site explains in a very instructional way of how to implement MVC in java.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.developer.com/java/ent/article.php/3336761 MVC in Java GUI applications]&lt;br /&gt;
:This site highlights the importance of MVC patterns and its application in many GUI-based applications, client interfaces, and widget toolkits for manipulating and storing data for the end users. Java’s Swing toolkit is a perfect example. The site explains the implementation of MVC in swing. It provides a listing of all components in the model interface. There is a sample code that would help a user to see the functionality of all examples.&lt;br /&gt;
&lt;br /&gt;
;*[http://java.sun.com/blueprints/patterns/MVC-detailed.html Sun description of MVC]&lt;br /&gt;
:This poses a simple situation where the MVC design pattern can be applied and used to solve the problem using JSP’s to render the views, Servlets as controllers, EJB as models&lt;br /&gt;
&lt;br /&gt;
;*[http://www.regdeveloper.co.uk/2006/07/17/ruby_rails_part2/ MVC example in Ruby on Rails]&lt;br /&gt;
:This is a very detailed instructional tutorial aimed at developing a MVC CRUD (Create, Read, Update, Delete) application in Ruby on Rails&lt;br /&gt;
&lt;br /&gt;
;*[http://blogs.ittoolbox.com/emergingtech/edge/archives/mvc-and-rails-12457 Blog on MVC in Ruby on Rails]&lt;br /&gt;
:This is a blog entry on MVC through the viewpoint of a Ruby on Rails developer defining MVC and giving minor details as to how MVC is implemented in Ruby on Rails.&lt;br /&gt;
&lt;br /&gt;
;*[http://wiki.rubyonrails.org/rails/pages/UnderstandingRailsMVC MVC in Rails explained in rubyonrails.org]&lt;br /&gt;
:This is an article on the Ruby on Rails official website defining the MVC usage in Rails along with links to articles within the same website for better understanding of MVC.&lt;br /&gt;
&lt;br /&gt;
;*[http://s3.amazonaws.com/sitepoint-books/ror.pdf Rails book dealing MVC architecture in Rails]&lt;br /&gt;
:This is a free download of pdf format of a book “Build your own Ruby on rails applications” by Patrick Lenz. This free pdf download expires by initial days of December//'2007//. This book provides a very wonderful development from the basics of Ruby to Ruby on Rails(RoR) and the MVC architecture explained and shown how it is embedded in RoR. This comes in conjunction with easy to learn illustrations&lt;br /&gt;
 &lt;br /&gt;
;*[http://www.15seconds.com/issue/060817.htm MVC in ASP .Net]&lt;br /&gt;
:The site provides a detailed but a simple overview of Model View Architecture with ASP.Net. It has pictorial representation of the MVC Framework. The picture will help the user to see the implementation of MVC and helps provide understanding of interactions present in MVC. Moreover there is an example of simple web site development to authenticate the user’s name and password by comparing the data with the database.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.tonymarston.net/php-mysql/infrastructure.html#mvc MVC in PHP]&lt;br /&gt;
:The website explains the application of MVC’s 3 Tier architecture for web development using PHP. It gives a comprehensive view of how to blend MVC architecture with Object oriented capabilities of PHP. It highlights the importance of reusability of code which is one of the most important advantages of MVC architecture.&lt;br /&gt;
&lt;br /&gt;
;*[http://msdn2.microsoft.com/en-us/library/ms978748.aspx MVC explained by MSDN]&lt;br /&gt;
:This site will help a new user to realize the importance of Model View Architecture. It mentions the problems faced by programmer who do not implement this 3 tier architecture and how the problems are resolved using MVC architecture. There is a section where they discussed about the testability which is greatly enhanced by employing this architecture. It also contains information about its benefits and liabilities.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.ifi.unizh.ch/richter/Classes/oose2/03_mvc/02_mvc_java/02_mvc_java.html#4%20Models%20as%20Proxies MVC architecture in Java Swing]&lt;br /&gt;
:This site is an extension to earlier site and provides detailed explanation about the usage of MVC architecture in Java’s Swing. This site is for the advanced users who need to apply MVC in visual programming.&lt;br /&gt;
&lt;br /&gt;
;*[http://images.google.com/imgres?imgurl=http://publib.boulder.ibm.com/infocenter/wsadhelp/v5r1m2/topic/com.ibm.etools.struts.doc/images/cstrdoc018.gif&amp;amp;imgrefurl=http://publib.boulder.ibm.com/infocenter/wsadhelp/v5r1m2/topic/com.ibm.etools.struts.doc/topics/cstrdoc001.html&amp;amp;h=322&amp;amp;w=628&amp;amp;sz=30&amp;amp;hl=en&amp;amp;start=2&amp;amp;um=1&amp;amp;tbnid=tVyYlnDiTkYQbM:&amp;amp;tbnh=70&amp;amp;tbnw=137&amp;amp;prev=/images%3Fq%3DMVC%2B%2Bdesign%2Bpattern%26svnum%3D10%26um%3D1%26hl%3Den%26sa%3DX Google Image explaining MVC in Java]&lt;br /&gt;
:This provides pictorial representation of applications of MVC in Java. It contains images along with explanation for the MVC pattern used in Java explaining MVC and how is it integrated with JSP and struts in Java. &lt;br /&gt;
&lt;br /&gt;
;*[http://www.codeproject.com/useritems/AJAX_MVC.asp?df=100&amp;amp;forumid=362797&amp;amp;exp=0&amp;amp;select=1797776 MVC in .NET and AJAX]&lt;br /&gt;
:This site discusses MVC usage in web based development particularly in .NET and AJAX framework. &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
The sites mentioned above are very useful for several programmers such Java, PHP, Smalltalk programmers. It provides a background for new users who would like to implement design patterns hand in hand with software engineering techniques. &lt;br /&gt;
Most of the sites explain the MVC as a part of implementation of MVC in their specific software or application. Only a few sites actually deal with the concept illustrating it in a lucid way with simple instructional examples.&lt;/div&gt;</summary>
		<author><name>Schinni</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=Http:/pg.ece.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2007/wiki2_3_77&amp;diff=7434</id>
		<title>Http:/pg.ece.ncsu.edu/mediawiki/index.php/CSC/ECE 517 Fall 2007/wiki2 3 77</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Http:/pg.ece.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2007/wiki2_3_77&amp;diff=7434"/>
		<updated>2007-10-24T20:53:29Z</updated>

		<summary type="html">&lt;p&gt;Schinni: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Model/View/Controller Websites Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Topic ===&lt;br /&gt;
----&lt;br /&gt;
Model/view/controller. There are literally hundreds of pages describing MVC on the Web. If someone wants to learn about it, what should (s)he do? Look at the first few hits in Google? I expect we can do better than that. Write a review of the MVC sites on the Web. Which are best for learning about the concept? Which have the most instructive examples? Which are best for explaining how to use the pattern in Ruby and Java? If you choose this topic, you should be sure to peruse at least several dozen sites.&lt;br /&gt;
&lt;br /&gt;
=== Introduction to Model/View/Controller (MVC)===&lt;br /&gt;
----&lt;br /&gt;
This is an architectural pattern adopted in software engineering. Generally, complex computer applications deal with large amount of data in conjunction with the functionality accessing this data which becomes difficult to handle. Hence the programmer likes to separate the functionality and data (model) from the user interface (view). This technique is very useful since any changes made to user interface may not affect the functionality of the program and vice versa.  The data may be reorganized without making any changes in user interface and this is accomplished by decoupling data access from data presentation and user interface by the introduction of an intermediate component named controller.&lt;br /&gt;
&lt;br /&gt;
The application is decoupled into three layers that would allow flexibility and reuse: &lt;br /&gt;
&lt;br /&gt;
'''Model:''' This is the domain-specific representation of information where the application operates. It knows about all the operations that can be used to transform this information. But it has no idea how these operations are invoked. (done from View)&lt;br /&gt;
&lt;br /&gt;
'''Controller:''' This layer responds the user (user inputs) and that may invoke changes on the model. More specifically as mentioned by “Martin Fowler” in his “Patterns of Enterprise Application Architecture” in a lucid way “Controller takes user input, manipulates the model and causes the view to update properly”&lt;br /&gt;
&lt;br /&gt;
'''View:''' This layer provides the user interface element. This is the presentational view of the model where the information is presented in a domain-specific and user-friendly way.&lt;br /&gt;
&lt;br /&gt;
The MVC architectural pattern is very useful for the purpose of web development applications. First advantage is the separation of concerns. Hence, code is cleaner and easier to understand. Another and more important advantage is reusability. The model can be enhanced in order to improve the functionality of the code with very minimal changes to the controller or view. &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=== Websites categorized ===&lt;br /&gt;
&lt;br /&gt;
There are many sites available online which are very useful to a newbie. Some of the websites we have come across helps a new user to get a proper pictorial representation and conceptual view of architectural pattern and can understand the interaction between the different layers (i.e. model, controller and view). The websites can be categorized into two broad divisions, &amp;quot;Basic Concept&amp;quot; and &amp;quot;Implementation-Specific&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;Basic Concept&amp;quot; Websites====&lt;br /&gt;
&lt;br /&gt;
Websites dealing with the concept of MVC as design pattern rather than an architecture basis used for implementing a particular programming language:&lt;br /&gt;
;*[http://www.phpwact.org/pattern/model_view_controller MVC overview]&lt;br /&gt;
:This site provides a detailed overview of MVC pattern. It explains the different layers and relationship among them. It discusses the importance of structuring views, controllers and models.  It contains information about the benefits and drawbacks of MVC along with the irrelevant situations where MVC will not be helpful.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.enode.com/x/markup/tutorial/mvc.html Exemplary overview of MVC]&lt;br /&gt;
:This site is perfect for the new users who want to have a clear idea of the MVC architecture. They have explained it by taking an example of spinner component that consists of text box and 2 buttons which can be used to increase or decrease the value is the text box.&lt;br /&gt;
&lt;br /&gt;
;*[http://articles.techrepublic.com.com/5100-22-1049862.html Tech Republic Article on MVC]&lt;br /&gt;
:Articles in Tech Republic that explain in a lucid way the MVC pattern, where it is best used and couple of its disadvantages.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.adobe.com/devnet/flash/articles/mv_controller.html MVC throughly dealt]&lt;br /&gt;
:This site has a detailed description of the MVC and its abstract working explained in detail. Though it is actually a chapter from textbook referring rarely to previous chapters , it gives a very detailed( in fact most detailed description of MVC with simple examples along with advantages of each feature of the MVC design pattern.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.kvcindia.com/mvc.htm Another MVC overview]&lt;br /&gt;
:The site is important for understanding the basics of MVC architecture. It provides an explanation about the advantages of using MVC architecture. &lt;br /&gt;
&lt;br /&gt;
;*[http://livedocs.adobe.com/flash/9.0/UsingFlash/help.html?content=WSd60f23110762d6b883b18f10cb1fe1af6-7b36.html MVC defined]&lt;br /&gt;
:It defines the MVC design pattern and explains the concept and how it helps simplifies the developer’s work and also improves the maintainability of the code&lt;br /&gt;
&lt;br /&gt;
;*[http://ist.berkeley.edu/as/ag/pub/pdf/mvc-seminar.pdf Seminar pdf on MVC]&lt;br /&gt;
:This the pdf of a MVC seminar used by UC Berkeley. Though not descriptive it gives a bird eye view of MVC operates along with a simple example.&lt;br /&gt;
&lt;br /&gt;
;*[http://cristobal.baray.com/indiana/projects/mvc.html MVC importance]&lt;br /&gt;
:This site is very useful for understanding the importance of design patterns such as MVC and its importance in developing applications with an example. The site discusses how to use applets in order to provide better interface to the user. It also suggests further helpful reading that would help the user to strengthen their base in the understanding of design patterns.&lt;br /&gt;
&lt;br /&gt;
;*[http://en.wikipedia.org/wiki/Model-view-controller Wiki entry on MVC]&lt;br /&gt;
:This link is the Wiki entry for MVC providing its description and various links to MVC implementations in different programming languages.&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Implementation Specific&amp;quot; Websites ===&lt;br /&gt;
The following sites illustrate the implementation of MVC in different programming languages like SmallTalk (MVC was originally created for this), Java, Ruby, ASP .NET etc.&lt;br /&gt;
&lt;br /&gt;
;*[http://st-www.cs.uiuc.edu/users/smarch/st-docs/mvc.html MVC architecture First Proposal] &lt;br /&gt;
:This provides the paper by Steve Burbeck, who initially proposed the concept of MVC for Small Talk programming. It provides overview of how to use to MVC for application programming in Smalltalk. It discusses the communication within and between the 3 layers of MVC.  It contains information about existing view hierarchy. Some of the existing views are browsers inspectors and debuggers.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.csis.pace.edu/~bergin/mvc/mvcgui.html MVC implemented in Java]&lt;br /&gt;
:This site gives a simple example of Temperature Control system implemented in java using the Observer and Observable ( these classes have been defined in java in order to implement the MVC architecture in Java)  .This site explains in a very instructional way of how to implement MVC in java.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.developer.com/java/ent/article.php/3336761 MVC in Java GUI applications]&lt;br /&gt;
:This site highlights the importance of MVC patterns and its application in many GUI-based applications, client interfaces, and widget toolkits for manipulating and storing data for the end users. Java’s Swing toolkit is a perfect example. The site explains the implementation of MVC in swing. It provides a listing of all components in the model interface. There is a sample code that would help a user to see the functionality of all examples.&lt;br /&gt;
&lt;br /&gt;
;*[http://java.sun.com/blueprints/patterns/MVC-detailed.html Sun description of MVC]&lt;br /&gt;
:This poses a simple situation where the MVC design pattern can be applied and used to solve the problem using JSP’s to render the views, Servlets as controllers, EJB as models&lt;br /&gt;
&lt;br /&gt;
;*[http://www.regdeveloper.co.uk/2006/07/17/ruby_rails_part2/ MVC example in Ruby on Rails]&lt;br /&gt;
:This is a very detailed instructional tutorial aimed at developing a MVC CRUD (Create, Read, Update, Delete) application in Ruby on Rails&lt;br /&gt;
&lt;br /&gt;
;*[http://blogs.ittoolbox.com/emergingtech/edge/archives/mvc-and-rails-12457 Blog on MVC in Ruby on Rails]&lt;br /&gt;
:This is a blog entry on MVC through the viewpoint of a Ruby on Rails developer defining MVC and giving minor details as to how MVC is implemented in Ruby on Rails.&lt;br /&gt;
&lt;br /&gt;
;*[http://wiki.rubyonrails.org/rails/pages/UnderstandingRailsMVC MVC in Rails explained in rubyonrails.org]&lt;br /&gt;
:This is an article on the Ruby on Rails official website defining the MVC usage in Rails along with links to articles within the same website for better understanding of MVC.&lt;br /&gt;
&lt;br /&gt;
;*[http://s3.amazonaws.com/sitepoint-books/ror.pdf Rails book dealing MVC architecture in Rails]&lt;br /&gt;
:This is a free download of pdf format of a book “Build your own Ruby on rails applications” by Patrick Lenz. This free pdf download expires by initial days of December//'2007//. This book provides a very wonderful development from the basics of Ruby to Ruby on Rails(RoR) and the MVC architecture explained and shown how it is embedded in RoR. This comes in conjunction with easy to learn illustrations&lt;br /&gt;
 &lt;br /&gt;
;*[http://www.15seconds.com/issue/060817.htm MVC in ASP .Net]&lt;br /&gt;
:The site provides a detailed but a simple overview of Model View Architecture with ASP.Net. It has pictorial representation of the MVC Framework. The picture will help the user to see the implementation of MVC and helps provide understanding of interactions present in MVC. Moreover there is an example of simple web site development to authenticate the user’s name and password by comparing the data with the database.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.tonymarston.net/php-mysql/infrastructure.html#mvc MVC in PHP]&lt;br /&gt;
:The website explains the application of MVC’s 3 Tier architecture for web development using PHP. It gives a comprehensive view of how to blend MVC architecture with Object oriented capabilities of PHP. It highlights the importance of reusability of code which is one of the most important advantages of MVC architecture.&lt;br /&gt;
&lt;br /&gt;
;*[http://msdn2.microsoft.com/en-us/library/ms978748.aspx MVC explained by MSDN]&lt;br /&gt;
:This site will help a new user to realize the importance of Model View Architecture. It mentions the problems faced by programmer who do not implement this 3 tier architecture and how the problems are resolved using MVC architecture. There is a section where they discussed about the testability which is greatly enhanced by employing this architecture. It also contains information about its benefits and liabilities.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.ifi.unizh.ch/richter/Classes/oose2/03_mvc/02_mvc_java/02_mvc_java.html#4%20Models%20as%20Proxies MVC architecture in Java Swing]&lt;br /&gt;
:This site is an extension to earlier site and provides detailed explanation about the usage of MVC architecture in Java’s Swing. This site is for the advanced users who need to apply MVC in visual programming.&lt;br /&gt;
&lt;br /&gt;
;*[http://images.google.com/imgres?imgurl=http://publib.boulder.ibm.com/infocenter/wsadhelp/v5r1m2/topic/com.ibm.etools.struts.doc/images/cstrdoc018.gif&amp;amp;imgrefurl=http://publib.boulder.ibm.com/infocenter/wsadhelp/v5r1m2/topic/com.ibm.etools.struts.doc/topics/cstrdoc001.html&amp;amp;h=322&amp;amp;w=628&amp;amp;sz=30&amp;amp;hl=en&amp;amp;start=2&amp;amp;um=1&amp;amp;tbnid=tVyYlnDiTkYQbM:&amp;amp;tbnh=70&amp;amp;tbnw=137&amp;amp;prev=/images%3Fq%3DMVC%2B%2Bdesign%2Bpattern%26svnum%3D10%26um%3D1%26hl%3Den%26sa%3DX Google Image explaining MVC in Java]&lt;br /&gt;
:This provides pictorial representation of applications of MVC in Java. It contains images along with explanation for the MVC pattern used in Java explaining MVC and how is it integrated with JSP and struts in Java. &lt;br /&gt;
&lt;br /&gt;
;*[http://www.codeproject.com/useritems/AJAX_MVC.asp?df=100&amp;amp;forumid=362797&amp;amp;exp=0&amp;amp;select=1797776 MVC in .NET and AJAX]&lt;br /&gt;
:This site discusses MVC usage in web based development particularly in .NET and AJAX framework. &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
The sites mentioned above are very useful for several programmers such Java, PHP, Smalltalk programmers. It provides a background for new users who would like to implement design patterns hand in hand with software engineering techniques. &lt;br /&gt;
Most of the sites explain the MVC as a part of implementation of MVC in their specific software or application. Only a few sites actually deal with the concept illustrating it in a lucid way with simple instructional examples.&lt;/div&gt;</summary>
		<author><name>Schinni</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=Http:/pg.ece.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2007/wiki2_3_77&amp;diff=7425</id>
		<title>Http:/pg.ece.ncsu.edu/mediawiki/index.php/CSC/ECE 517 Fall 2007/wiki2 3 77</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Http:/pg.ece.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2007/wiki2_3_77&amp;diff=7425"/>
		<updated>2007-10-24T20:40:41Z</updated>

		<summary type="html">&lt;p&gt;Schinni: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Model/View/Controller Websites Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Topic ===&lt;br /&gt;
----&lt;br /&gt;
Model/view/controller. There are literally hundreds of pages describing MVC on the Web. If someone wants to learn about it, what should (s)he do? Look at the first few hits in Google? I expect we can do better than that. Write a review of the MVC sites on the Web. Which are best for learning about the concept? Which have the most instructive examples? Which are best for explaining how to use the pattern in Ruby and Java? If you choose this topic, you should be sure to peruse at least several dozen sites.&lt;br /&gt;
&lt;br /&gt;
=== Introduction to Model/View/Controller (MVC)===&lt;br /&gt;
----&lt;br /&gt;
This is an architectural pattern adopted in software engineering. Generally, complex computer applications deal with large amount of data in conjunction with the functionality accessing this data which becomes difficult to handle. Hence the programmer likes to separate the functionality and data (model) from the user interface (view). This technique is very useful since any changes made to user interface may not affect the functionality of the program and vice versa.  The data may be reorganized without making any changes in user interface and this is accomplished by decoupling data access from data presentation and user interface by the introduction of an intermediate component named controller.&lt;br /&gt;
&lt;br /&gt;
The application is decoupled into three layers that would allow flexibility and reuse: &lt;br /&gt;
&lt;br /&gt;
'''Model:''' This is the domain-specific representation of information where the application operates. It knows about all the operations that can be used to transform this information. But it has no idea how these operations are invoked. (done from View)&lt;br /&gt;
&lt;br /&gt;
'''Controller:''' This layer responds the user (user inputs) and that may invoke changes on the model. More specifically as mentioned by “Martin Fowler” in his “Patterns of Enterprise Application Architecture” in a lucid way “Controller takes user input, manipulates the model and causes the view to update properly”&lt;br /&gt;
&lt;br /&gt;
'''View:''' This layer provides the user interface element. This is the presentational view of the model where the information is presented in a domain-specific and user-friendly way.&lt;br /&gt;
&lt;br /&gt;
The MVC architectural pattern is very useful for the purpose of web development applications. First advantage is the separation of concerns. Hence, code is cleaner and easier to understand. Another and more important advantage is reusability. The model can be enhanced in order to improve the functionality of the code with very minimal changes to the controller or view. &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=== Websites categorized ===&lt;br /&gt;
&lt;br /&gt;
There are many sites available online which are very useful to a newbie. Some of the websites we have come across helps a new user to get a proper pictorial representation and conceptual view of architectural pattern and can understand the interaction between the different layers (i.e. model, controller and view). The websites can be categorized into two broad divisions, &amp;quot;Basic Concept&amp;quot; and &amp;quot;Implementation-Specific&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;Basic Concept&amp;quot; Websites====&lt;br /&gt;
&lt;br /&gt;
Websites dealing with the concept of MVC as design pattern rather than an architecture basis used for implementing a particular programming language:&lt;br /&gt;
;*[http://www.phpwact.org/pattern/model_view_controller MVC overview]&lt;br /&gt;
:This site provides a detailed overview of MVC pattern. It explains the different layers and relationship among them. It discusses the importance of structuring views, controllers and models.  It contains information about the benefits and drawbacks of MVC along with the irrelevant situations where MVC will not be helpful.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.enode.com/x/markup/tutorial/mvc.html Exemplary overview of MVC]&lt;br /&gt;
:This site is perfect for the new users who want to have a clear idea of the MVC architecture. They have explained it by taking an example of spinner component that consists of text box and 2 buttons which can be used to increase or decrease the value is the text box.&lt;br /&gt;
&lt;br /&gt;
;*[http://articles.techrepublic.com.com/5100-22-1049862.html Tech Republic Article on MVC]&lt;br /&gt;
:Articles in Tech Republic that explain in a lucid way the MVC pattern, where it is best used and couple of its disadvantages.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.adobe.com/devnet/flash/articles/mv_controller.html MVC throughly dealt]&lt;br /&gt;
:This site has a detailed description of the MVC and its abstract working explained in detail. Though it is actually a chapter from textbook referring rarely to previous chapters , it gives a very detailed( in fact most detailed description of MVC with simple examples along with advantages of each feature of the MVC design pattern.&lt;br /&gt;
&lt;br /&gt;
;*[http://www.kvcindia.com/mvc.htm Another MVC overview]&lt;br /&gt;
:The site is important for understanding the basics of MVC architecture. It provides an explanation about the advantages of using MVC architecture. &lt;br /&gt;
&lt;br /&gt;
;*[http://livedocs.adobe.com/flash/9.0/UsingFlash/help.html?content=WSd60f23110762d6b883b18f10cb1fe1af6-7b36.html MVC defined]&lt;br /&gt;
:It defines the MVC design pattern and explains the concept and how it helps simplifies the developer’s work and also improves the maintainability of the code&lt;br /&gt;
&lt;br /&gt;
;*[http://ist.berkeley.edu/as/ag/pub/pdf/mvc-seminar.pdf Seminar pdf on MVC]&lt;br /&gt;
:This the pdf of a MVC seminar used by UC Berkeley. Though not descriptive it gives a bird eye view of MVC operates along with a simple example.&lt;br /&gt;
&lt;br /&gt;
;*[http://cristobal.baray.com/indiana/projects/mvc.html MVC importance]&lt;br /&gt;
:This site is very useful for understanding the importance of design patterns such as MVC and its importance in developing applications with an example. The site discusses how to use applets in order to provide better interface to the user. It also suggests further helpful reading that would help the user to strengthen their base in the understanding of design patterns.&lt;br /&gt;
&lt;br /&gt;
;*[http://en.wikipedia.org/wiki/Model-view-controller Wiki entry on MVC]&lt;br /&gt;
:This link is the Wiki entry for MVC providing its description and various links to MVC implementations in different programming languages.&lt;br /&gt;
&lt;br /&gt;
II.	The following sites illustrate the implementation of MVC in different programming languages like SmallTalk (MVC was originally created for this), Java, Ruby, ASP .NET etc&lt;br /&gt;
1)	http://st-www.cs.uiuc.edu/users/smarch/st-docs/mvc.html&lt;br /&gt;
This provides the paper by Steve Burbeck, who initially proposed the concept of MVC for Small Talk programming. It provides overview of how to use to MVC for application programming in Smalltalk. It discusses the communication within and between the 3 layers of MVC.  It contains information about existing view hierarchy. Some of the existing views are browsers inspectors and debuggers.&lt;br /&gt;
2)	http://www.csis.pace.edu/~bergin/mvc/mvcgui.html&lt;br /&gt;
This site gives a simple example of Temperature Control system implemented in java using the Observer and Observable ( these classes have been defined in java in order to implement the MVC architecture in Java)  .This site explains in a very instructional way of how to implement MVC in java.&lt;br /&gt;
3)	http://www.developer.com/java/ent/article.php/3336761&lt;br /&gt;
This site highlights the importance of MVC patterns and its application in many GUI-based applications, client interfaces, and widget toolkits for manipulating and storing data for the end users. Java’s Swing toolkit is a perfect example. The site explains the implementation of MVC in swing. It provides a listing of all components in the model interface. There is a sample code that would help a user to see the functionality of all examples.&lt;br /&gt;
4)	http://java.sun.com/blueprints/patterns/MVC-detailed.html&lt;br /&gt;
This poses a simple situation where the MVC design pattern can be applied and used to solve the problem using JSP’s to render the views, Servlets as controllers, EJB as models&lt;br /&gt;
5)	http://www.regdeveloper.co.uk/2006/07/17/ruby_rails_part2/&lt;br /&gt;
This is a very detailed instructional tutorial aimed at developing a MVC CRUD (Create, Read, Update, Delete) application in Ruby on Rails&lt;br /&gt;
6)	http://blogs.ittoolbox.com/emergingtech/edge/archives/mvc-and-rails-12457&lt;br /&gt;
This is a blog entry on MVC through the viewpoint of a Ruby on Rails developer defining MVC and giving minor details as to how MVC is implemented in Ruby on Rails.&lt;br /&gt;
7)	http://wiki.rubyonrails.org/rails/pages/UnderstandingRailsMVC&lt;br /&gt;
This is an article on the Ruby on Rails official website defining the MVC usage in Rails along with links to articles within the same website for better understanding of MVC.&lt;br /&gt;
8)	http://s3.amazonaws.com/sitepoint-books/ror.pdf&lt;br /&gt;
This is a free download of pdf format of a book “Build your own Ruby on rails applications” by Patrick Lenz. This free pdf download expires by initial days of December. This book provides a very wonderful development from the basics of Ruby to Ruby on Rails(RoR) and the MVC architecture explained and shown how it is embedded in RoR. This comes in conjunction with easy to learn illustrations&lt;br /&gt;
The following is the pictorial representation of a simple example taken from the above book&lt;br /&gt;
 &lt;br /&gt;
9)	http://www.15seconds.com/issue/060817.htm&lt;br /&gt;
The site provides a detailed but a simple overview of Model View Architecture with ASP.Net. It has pictorial representation of the MVC Framework. The picture will help the user to see the implementation of MVC and helps provide understanding of interactions present in MVC. Moreover there is an example of simple web site development to authenticate the user’s name and password by comparing the data with the database.&lt;br /&gt;
10)	http://www.tonymarston.net/php-mysql/infrastructure.html#mvc&lt;br /&gt;
The website explains the application of MVC’s 3 Tier architecture for web development using PHP. It gives a comprehensive view of how to blend MVC architecture with Object oriented capabilities of PHP. It highlights the importance of reusability of code which is one of the most important advantages of MVC architecture.&lt;br /&gt;
11)	http://msdn2.microsoft.com/en-us/library/ms978748.aspx&lt;br /&gt;
This site will help a new user to realize the importance of Model View Architecture. It mentions the problems faced by programmer who do not implement this 3 tier architecture and how the problems are resolved using MVC architecture. There is a section where they discussed about the testability which is greatly enhanced by employing this architecture. It also contains information about its benefits and liabilities.&lt;br /&gt;
12)	http://www.ifi.unizh.ch/richter/Classes/oose2/03_mvc/02_mvc_java/02_mvc_java.html#4%20Models%20as%20Proxies&lt;br /&gt;
This site is an extension to earlier site and provides detailed explanation about the usage of MVC architecture in Java’s Swing. This site is for the advanced users who need to apply MVC in visual programming.&lt;br /&gt;
13)	http://images.google.com/imgres?imgurl=http://publib.boulder.ibm.com/infocenter/wsadhelp/v5r1m2/topic/com.ibm.etools.struts.doc/images/cstrdoc018.gif&amp;amp;imgrefurl=http://publib.boulder.ibm.com/infocenter/wsadhelp/v5r1m2/topic/com.ibm.etools.struts.doc/topics/cstrdoc001.html&amp;amp;h=322&amp;amp;w=628&amp;amp;sz=30&amp;amp;hl=en&amp;amp;start=2&amp;amp;um=1&amp;amp;tbnid=tVyYlnDiTkYQbM:&amp;amp;tbnh=70&amp;amp;tbnw=137&amp;amp;prev=/images%3Fq%3DMVC%2B%2Bdesign%2Bpattern%26svnum%3D10%26um%3D1%26hl%3Den%26sa%3DX&lt;br /&gt;
This provides pictorial representation of applications of MVC in Smalltalk-80™. It contains images along with explanation for the MVC pattern used in Java explaining MVC and how is it integrated with JSP and struts in Java. &lt;br /&gt;
14)	http://www.codeproject.com/useritems/AJAX_MVC.asp?df=100&amp;amp;forumid=362797&amp;amp;exp=0&amp;amp;select=1797776&lt;br /&gt;
This site discusses MVC usage in web based development particularly in .NET and AJAX framework. &lt;br /&gt;
Conclusions: The sites mentioned above are very useful for several programmers such Java, PHP, Smalltalk programmers. It provides a background for new users who would like to implement design patterns hand in hand with software engineering techniques. &lt;br /&gt;
Most of the sites explain the MVC as a part of implementation of MVC in their specific software or application. Only a few sites actually deal with the concept illustrating it in a lucid way with simple instructional examples&lt;/div&gt;</summary>
		<author><name>Schinni</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=Http:/pg.ece.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2007/wiki2_3_77&amp;diff=7410</id>
		<title>Http:/pg.ece.ncsu.edu/mediawiki/index.php/CSC/ECE 517 Fall 2007/wiki2 3 77</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Http:/pg.ece.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2007/wiki2_3_77&amp;diff=7410"/>
		<updated>2007-10-24T20:27:59Z</updated>

		<summary type="html">&lt;p&gt;Schinni: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Model/View/Controller Websites Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Topic ===&lt;br /&gt;
----&lt;br /&gt;
Model/view/controller. There are literally hundreds of pages describing MVC on the Web. If someone wants to learn about it, what should (s)he do? Look at the first few hits in Google? I expect we can do better than that. Write a review of the MVC sites on the Web. Which are best for learning about the concept? Which have the most instructive examples? Which are best for explaining how to use the pattern in Ruby and Java? If you choose this topic, you should be sure to peruse at least several dozen sites.&lt;br /&gt;
&lt;br /&gt;
=== Introduction to Model/View/Controller (MVC)===&lt;br /&gt;
----&lt;br /&gt;
This is an architectural pattern adopted in software engineering. Generally, complex computer applications deal with large amount of data in conjunction with the functionality accessing this data which becomes difficult to handle. Hence the programmer likes to separate the functionality and data (model) from the user interface (view). This technique is very useful since any changes made to user interface may not affect the functionality of the program and vice versa.  The data may be reorganized without making any changes in user interface and this is accomplished by decoupling data access from data presentation and user interface by the introduction of an intermediate component named controller.&lt;br /&gt;
&lt;br /&gt;
The application is decoupled into three layers that would allow flexibility and reuse: &lt;br /&gt;
&lt;br /&gt;
'''Model:''' This is the domain-specific representation of information where the application operates. It knows about all the operations that can be used to transform this information. But it has no idea how these operations are invoked. (done from View)&lt;br /&gt;
&lt;br /&gt;
'''Controller:''' This layer responds the user (user inputs) and that may invoke changes on the model. More specifically as mentioned by “Martin Fowler” in his “Patterns of Enterprise Application Architecture” in a lucid way “Controller takes user input, manipulates the model and causes the view to update properly”&lt;br /&gt;
&lt;br /&gt;
'''View:''' This layer provides the user interface element. This is the presentational view of the model where the information is presented in a domain-specific and user-friendly way.&lt;br /&gt;
&lt;br /&gt;
This MVC architectural pattern is very useful for the purpose of web development applications. First advantage is the separation of concerns. Hence, code is cleaner and easier to understand. Another bigger advantage is reusability. The model can be enhanced in order to improve the functionality of the code without making any changes to the controller or view. &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=== Websites categorized ===&lt;br /&gt;
&lt;br /&gt;
There are many sites available online which are very useful to a newbie. Some of the websites we have come across helps a new user to get a proper pictorial representation and conceptual view of architectural pattern and can understand the interaction between the different layers (i.e. model, controller and view). The websites can be categorized into two broad divisions, &amp;quot;Basic Concept&amp;quot; and &amp;quot;Implementation-Specific&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;Basic Concept&amp;quot; Websites====&lt;br /&gt;
&lt;br /&gt;
Websites dealing with the concept of MVC as design pattern rather than an architecture basis used for implementing a particular programming language.&lt;br /&gt;
&lt;br /&gt;
*http://www.phpwact.org/pattern/model_view_controller&lt;br /&gt;
This site provides a detailed overview of MVC pattern. It explains the different layers and relationship among them. It discusses the importance of structuring views, controllers and models.  It contains information about the benefits and drawbacks of MVC along with the irrelevant situations where MVC will not be helpful.&lt;br /&gt;
&lt;br /&gt;
*http://www.enode.com/x/markup/tutorial/mvc.html&lt;br /&gt;
This site is perfect for the new users who want to have a clear idea of the MVC architecture. They have explained it by taking an example of spinner component that consists of text box and 2 buttons which can be used to increase or decrease the value is the text box.&lt;br /&gt;
&lt;br /&gt;
*http://articles.techrepublic.com.com/5100-22-1049862.html&lt;br /&gt;
Articles in Tech Republic that explain in a lucid way the MVC pattern, where it is best used and couple of its disadvantages.&lt;br /&gt;
&lt;br /&gt;
*http://www.adobe.com/devnet/flash/articles/mv_controller.html&lt;br /&gt;
This site has a detailed description of the MVC and its abstract working explained in detail. Though it is actually a chapter from textbook referring rarely to previous chapters , it gives a very detailed( in fact most detailed description of MVC with simple examples along with advantages of each feature of the MVC design pattern.&lt;br /&gt;
&lt;br /&gt;
*http://www.kvcindia.com/mvc.htm&lt;br /&gt;
The site is important for understanding the basics of MVC architecture. It provides an explanation about the advantages of using MVC architecture. &lt;br /&gt;
&lt;br /&gt;
*http://livedocs.adobe.com/flash/9.0/UsingFlash/help.html?content=WSd60f23110762d6b883b18f10cb1fe1af6-7b36.html&lt;br /&gt;
It defines the MVC design pattern and explains the concept and how it helps simplifies the developer’s work and also improves the maintainability of the code&lt;br /&gt;
&lt;br /&gt;
*http://ist.berkeley.edu/as/ag/pub/pdf/mvc-seminar.pdf&lt;br /&gt;
This the pdf of a MVC seminar used by UC Berkeley. Though not descriptive it gives a bird eye view of MVC operates along with a simple example.&lt;br /&gt;
&lt;br /&gt;
*http://cristobal.baray.com/indiana/projects/mvc.html&lt;br /&gt;
This site is very useful for understanding the importance of design patterns such as MVC and its importance in developing applications with an example. The site discusses how to use applets in order to provide better interface to the user. It also suggests further helpful reading that would help the user to strengthen their base in the understanding of design patterns.&lt;br /&gt;
&lt;br /&gt;
*http://en.wikipedia.org/wiki/Model-view-controller&lt;br /&gt;
This link is the Wiki entry for MVC providing its description and various links to MVC implementations in different programming languages.&lt;br /&gt;
&lt;br /&gt;
II.	The following sites illustrate the implementation of MVC in different programming languages like SmallTalk (MVC was originally created for this), Java, Ruby, ASP .NET etc&lt;br /&gt;
1)	http://st-www.cs.uiuc.edu/users/smarch/st-docs/mvc.html&lt;br /&gt;
This provides the paper by Steve Burbeck, who initially proposed the concept of MVC for Small Talk programming. It provides overview of how to use to MVC for application programming in Smalltalk. It discusses the communication within and between the 3 layers of MVC.  It contains information about existing view hierarchy. Some of the existing views are browsers inspectors and debuggers.&lt;br /&gt;
2)	http://www.csis.pace.edu/~bergin/mvc/mvcgui.html&lt;br /&gt;
This site gives a simple example of Temperature Control system implemented in java using the Observer and Observable ( these classes have been defined in java in order to implement the MVC architecture in Java)  .This site explains in a very instructional way of how to implement MVC in java.&lt;br /&gt;
3)	http://www.developer.com/java/ent/article.php/3336761&lt;br /&gt;
This site highlights the importance of MVC patterns and its application in many GUI-based applications, client interfaces, and widget toolkits for manipulating and storing data for the end users. Java’s Swing toolkit is a perfect example. The site explains the implementation of MVC in swing. It provides a listing of all components in the model interface. There is a sample code that would help a user to see the functionality of all examples.&lt;br /&gt;
4)	http://java.sun.com/blueprints/patterns/MVC-detailed.html&lt;br /&gt;
This poses a simple situation where the MVC design pattern can be applied and used to solve the problem using JSP’s to render the views, Servlets as controllers, EJB as models&lt;br /&gt;
5)	http://www.regdeveloper.co.uk/2006/07/17/ruby_rails_part2/&lt;br /&gt;
This is a very detailed instructional tutorial aimed at developing a MVC CRUD (Create, Read, Update, Delete) application in Ruby on Rails&lt;br /&gt;
6)	http://blogs.ittoolbox.com/emergingtech/edge/archives/mvc-and-rails-12457&lt;br /&gt;
This is a blog entry on MVC through the viewpoint of a Ruby on Rails developer defining MVC and giving minor details as to how MVC is implemented in Ruby on Rails.&lt;br /&gt;
7)	http://wiki.rubyonrails.org/rails/pages/UnderstandingRailsMVC&lt;br /&gt;
This is an article on the Ruby on Rails official website defining the MVC usage in Rails along with links to articles within the same website for better understanding of MVC.&lt;br /&gt;
8)	http://s3.amazonaws.com/sitepoint-books/ror.pdf&lt;br /&gt;
This is a free download of pdf format of a book “Build your own Ruby on rails applications” by Patrick Lenz. This free pdf download expires by initial days of December. This book provides a very wonderful development from the basics of Ruby to Ruby on Rails(RoR) and the MVC architecture explained and shown how it is embedded in RoR. This comes in conjunction with easy to learn illustrations&lt;br /&gt;
The following is the pictorial representation of a simple example taken from the above book&lt;br /&gt;
 &lt;br /&gt;
9)	http://www.15seconds.com/issue/060817.htm&lt;br /&gt;
The site provides a detailed but a simple overview of Model View Architecture with ASP.Net. It has pictorial representation of the MVC Framework. The picture will help the user to see the implementation of MVC and helps provide understanding of interactions present in MVC. Moreover there is an example of simple web site development to authenticate the user’s name and password by comparing the data with the database.&lt;br /&gt;
10)	http://www.tonymarston.net/php-mysql/infrastructure.html#mvc&lt;br /&gt;
The website explains the application of MVC’s 3 Tier architecture for web development using PHP. It gives a comprehensive view of how to blend MVC architecture with Object oriented capabilities of PHP. It highlights the importance of reusability of code which is one of the most important advantages of MVC architecture.&lt;br /&gt;
11)	http://msdn2.microsoft.com/en-us/library/ms978748.aspx&lt;br /&gt;
This site will help a new user to realize the importance of Model View Architecture. It mentions the problems faced by programmer who do not implement this 3 tier architecture and how the problems are resolved using MVC architecture. There is a section where they discussed about the testability which is greatly enhanced by employing this architecture. It also contains information about its benefits and liabilities.&lt;br /&gt;
12)	http://www.ifi.unizh.ch/richter/Classes/oose2/03_mvc/02_mvc_java/02_mvc_java.html#4%20Models%20as%20Proxies&lt;br /&gt;
This site is an extension to earlier site and provides detailed explanation about the usage of MVC architecture in Java’s Swing. This site is for the advanced users who need to apply MVC in visual programming.&lt;br /&gt;
13)	http://images.google.com/imgres?imgurl=http://publib.boulder.ibm.com/infocenter/wsadhelp/v5r1m2/topic/com.ibm.etools.struts.doc/images/cstrdoc018.gif&amp;amp;imgrefurl=http://publib.boulder.ibm.com/infocenter/wsadhelp/v5r1m2/topic/com.ibm.etools.struts.doc/topics/cstrdoc001.html&amp;amp;h=322&amp;amp;w=628&amp;amp;sz=30&amp;amp;hl=en&amp;amp;start=2&amp;amp;um=1&amp;amp;tbnid=tVyYlnDiTkYQbM:&amp;amp;tbnh=70&amp;amp;tbnw=137&amp;amp;prev=/images%3Fq%3DMVC%2B%2Bdesign%2Bpattern%26svnum%3D10%26um%3D1%26hl%3Den%26sa%3DX&lt;br /&gt;
This provides pictorial representation of applications of MVC in Smalltalk-80™. It contains images along with explanation for the MVC pattern used in Java explaining MVC and how is it integrated with JSP and struts in Java. &lt;br /&gt;
14)	http://www.codeproject.com/useritems/AJAX_MVC.asp?df=100&amp;amp;forumid=362797&amp;amp;exp=0&amp;amp;select=1797776&lt;br /&gt;
This site discusses MVC usage in web based development particularly in .NET and AJAX framework. &lt;br /&gt;
Conclusions: The sites mentioned above are very useful for several programmers such Java, PHP, Smalltalk programmers. It provides a background for new users who would like to implement design patterns hand in hand with software engineering techniques. &lt;br /&gt;
Most of the sites explain the MVC as a part of implementation of MVC in their specific software or application. Only a few sites actually deal with the concept illustrating it in a lucid way with simple instructional examples&lt;/div&gt;</summary>
		<author><name>Schinni</name></author>
	</entry>
</feed>