This week's book giveaway is in the OO, Patterns, UML and Refactoring forum. We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line! See this thread for details.
There are some cases in which, a class has a private constructor. Such classes cannot be instantiated using new operator. Instead, a public static method is provided whose return type is the class itself( i.e.it provides the instance of the its class). This static method is called the factory method and this class is called the factory class.
Joined: May 29, 2002
thank you, I know the technique now I know the name
Two uses of the Factory pattern come to mind immediately (there are sure to be others with many more examples): 1) To control the number and way that objects are created. This could be for caching or pooling reasons, or simply to ensure that only certain instances of a class are created (Aside: I've seen Factory classes used when a Type-Safe Enum pattern would be more appropriate, but that's another show...). 2) When you want to create specific concrete instances of classes that extend an abstract class, or implement an interface, based upon run-time information. As an example, let's say that we have a Widget interface that defines the attributes and behavior of widgets, but that there are vendor-specific differences on how the behaviors manifest themselves. All vendor widgets implement Widget so our code doesn't care which vendor's widget we have as long as it behaves correctly. The factory class is responsible for creating the correct concrete instance (perhaps using info passed to it, and/or environmental values) and returning the Widget-implementing object. hth, bear [ June 14, 2002: Message edited by: Bear Bibeault ]
The soul is dyed the color of its thoughts. Think only on those things that are in line with your principles and can bear the light of day. The content of your character is your choice. Day by day, what you do is who you become. Your integrity is your destiny - it is the light that guides your way. - Heraclitus