Like Abstract Factory Pattern, Factory Method Pattern is also a part of Creational patterns. This pattern is also to create concrete product objects. There are many ways are available to implement Factory Method Pattern in .Net. Here I will demostrate a typical structure of Factory Method Pattern.
Factory Method Pattern Structure
- Creator: An interface to create product objects. which contains either factor method declarations or factory methods itself. (In .Net an Abstract class or Interface is used to create Creator).
- Concrete Creator: It implements the factory methods declared within the Creator. (It will be class declaration)
- Product: Declares an interface to define products. (It will be either an Abstract class or an Interface)
- Concrete Product: It implements the Product to define a concrete object. (it will be class).
Have a look on the following example. Here in this example I have created all the above mentioned items.
1. Creating Product. In the example I have used an Interface named "IFruit" to create a Product.
Note: Here in our example I have used Interface instead of base classe, you can use abstract classes because abstract classes offer versioning benefits over pure interfaces.
public interface IFruit
{
string GetDescription();
}
2. Creating concrete products. In our example I have created two concrete products named "Apple" and "Orange".
public class Apple : IFruit
{
public string GetDescription()
{
return "I'm an Apple....!";
}
}
public class Orange : IFruit
{
public string GetDescription()
{
return "I'm an Orange....!";
}
}
3. Creating Creator: In our example I have created a creator named "IFruitFactory".
public interface IFruitFactory
{
IFruit CreateApple();
IFruit CreateOrange();
}
4. Creating Concrete Creator: We have a concrete creator named "FruitFactory" is in our example. public class FruitFactory : IFruitFactory
{
public IFruit CreateApple()
{
return new Apple();
}
public IFruit CreateOrange()
{
return new Orange();
}
}
Next we can consume our sample application IFruitFactory fruitFactory = new FruitFactory();
IFruit fruit;
fruit = fruitFactory.CreateApple();
Console.WriteLine(fruit.GetDescription());
fruit = fruitFactory.CreateOrange();
Console.WriteLine(fruit.GetDescription());
Hope all of you are clear with Factory Method pattern. Above I mentioned only the typical way of defining Factory Method Pattern; there are several other ways to implement the same. Try it yourself. :-)
8 comments:
Easiest example on web for Factory method. Really like it and was able to understand this pattern in just 2 minutes :)
Thanks!
Nice to learn in a glance :)
Dhandapani M
Really helpful. Excellent
Can u plz post other articles explaining rest of the design patterns.And Your examples are very easy to understand.Plz use easy examples..........
Thanks...
I doubt this example as it violate the Interface Segregation Principle Solid rule..
I might be wrong but just want to check with you one more time...
http://dotnet.dzone.com/articles/design-patterns-c-factory
got in first attempt. Very easy to understand. Thanks!
An interface to create product things. which contains either aspect method conditions or manufacturer methods itself.
Post a Comment