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();
    }
    public class FruitFactory : IFruitFactory
    {
        public IFruit CreateApple()
        {
            return new Apple();
        }
        public IFruit CreateOrange()
        {
            return new Orange();
        }
    }
            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. :-)
Easiest example on web for Factory method. Really like it and was able to understand this pattern in just 2 minutes :)
ReplyDeleteThanks!
Nice to learn in a glance :)
ReplyDeleteDhandapani M
Really helpful. Excellent
ReplyDeleteCan u plz post other articles explaining rest of the design patterns.And Your examples are very easy to understand.Plz use easy examples..........
ReplyDeleteThanks...
I doubt this example as it violate the Interface Segregation Principle Solid rule..
ReplyDeleteI might be wrong but just want to check with you one more time...
http://dotnet.dzone.com/articles/design-patterns-c-factory
ReplyDeletegot in first attempt. Very easy to understand. Thanks!
ReplyDeleteAn interface to create product things. which contains either aspect method conditions or manufacturer methods itself.
ReplyDelete