Xpode.com        Click here to Print this article.

Factory Pattern described with simple example

Factory method is "Define an interface for creating an object, but let the subclasses decide which class to instantiate." 

In simple words we develop an abstraction that isolates the logic for determining which type of class to create.

All Concept clear with below example.wo

You go to coffee shop and Want to order coffee. There are two type of coffee

- Hot

- Cold

Suppose in menu at number one is Hot and on two is cold

Which number you will tell, that order will processed.

To solve in factory way. Will make one abstract class and two sub classes,

    public abstract class Coffee
    {
        public abstract string Title { get; }
    }

    public class Hot : Coffee
    {
        public override string Title
        {
            get { return "Hot Coffee with Suger"; }
        }
    }

    public class Cold : Coffee
    {
        public override string Title
        {
            get { return "Cold Coffee with Ice"; }
        }
    }

// In case coffee is not available

    public class NoCoffee : Coffee
    {
        public override string Title
        {
            get { return "Today no coffee.. Would you like some drink :) "; }
        }
    }
   

Now will make an inermediate which will receive input from user and will create object of relevent class.

 public static class Factory
    {
        public static Coffee GetCoffee(int i)
        {
            switch (i)
            {
                case 0:
                    return new Hot();

                case 1:
                    return new Cold();
          
                default:
                    return new NoCoffee();

            }
        }
    }


Ok All work is complete except Order

Only need to give input

static void Main(string[] args)
        {
          Console.WriteLine( Factory.GetCoffee(1).Title);
        }

It will show Hot Coffee






http://
http://

Contributed by:
Rohit kakria
I am software developer, moderator of xpode.com

Resourse address on xpode.com
http://www.xpode.com/Print.aspx?Articleid=610

Click here to go on website