CSC/ECE 517 Fall 2007/wiki3 5 ab
Problem Statement
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
Introduction
The creator design pattern is a part of the family of design patterns colectively referred to as (GRASP) General Responsibility Assignment Software Patterns . The various patterns or principles associated with GRASP are creator, controller, low coupling, high cohesion, polymorphism , and Factory pattern. These patterns are critical to any software development project . We specifically look into the creator pattern of GRASP and compare it with the factory pattern.
The Creator Pattern
The creator paatern under GRASP is mainly associated with delegating the creation of an object of a certain class to another responsible class. Object creations is one of the most important aspects of oject oriented design and hence having a good design associated with proper delegation of object creations would result in maximum reuse and minimum coupling. To figure out which class should be delegated the resposibility of creating objects, the folowing set of rules should be followed.
A certain class X should be associated with creating objects of class Y if any of the following is true
1)Class X contains objects of class Y.
2)Class X aggregates objects of class Y.
3)Class X records instances of class Y.
4)Class X owns the initialization data which helps in creating objects of class X.
5)Class X makes good use of objects of class Y.
Following examples have been illustrated to show the implementation of the Creator pattern. These examples have been documented from various resources available on the web.
Example 1
Example 2
Example 3
Example 4
The Factory Pattern
Creator vs Factory Pattern
Information on the Web
1. http://blogs.msdn.com/sanjeets/archive/2007/09/02/creational-factory-pattern.aspx
2. http://davidhayden.com/blog/dave/archive/2004/12/06/667.aspx
3. http://en.wikipedia.org/wiki/GRASP_(Object_Oriented_Design)#Factory
4. http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/maps/class4/Creator.html
5. http://gsraj.tripod.com/design/creational/factory/factory.html
7. http://www.apwebco.com/gofpatterns/creational/FactoryMethod.html
11. http://faculty.inverhills.edu/dlevitt/CS%202000%20(FP)/GRASP%20Patterns.pdf
12. http://www.ondotnet.com/pub/a/dotnet/2003/08/11/factorypattern.html
13. http://www.mindspring.com/~mgrand/pattern_synopses2.htm
14. http://www.oodesign.com/oo_design_patterns/creational_patterns/factory_method.html
15. http://www.codeproject.com/useritems/BuilderPattern.asp
16. http://www.cs.purdue.edu/homes/jv/510s05/patterns.pdf
17. http://www-plan.cs.colorado.edu/danielvd/paper/gpce03.pdf