Search This Blog

Wednesday 17 February 2016

Factory Design Pattern in C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace FactoryDesignPattern
{
    interface IProgramingLanguages
    {
        string ProgramingLanguage { get; }
    }

    class C : IProgramingLanguages
    {
        public string ProgramingLanguage
        {
            get
            {
                return "Welcome to C Language";
            }
        }
    }
    class CPlusPlus : IProgramingLanguages
    {
        public string ProgramingLanguage
        {
            get
            {
                return "Welcome to C++ Language";
            }
        }
    }
    class CSharp : IProgramingLanguages
    {
        public string ProgramingLanguage
        {
            get
            {
                return "Welcome to C# Language";
            }
        }
    }
    class Java : IProgramingLanguages
    {
        public string ProgramingLanguage
        {
            get
            {
                return "Welcome to Java Language";
            }
        }
    }
    class JavaScript : IProgramingLanguages
    {
        public string ProgramingLanguage
        {
            get
            {
                return "Welcome to JavaScript Language";
            }
        }
    }

    class PHP : IProgramingLanguages
    {
        public string ProgramingLanguage
        {
            get
            {
                return "Welcome to PHP Language";
            }
        }
    }

    class Python : IProgramingLanguages
    {
        public string ProgramingLanguage
        {
            get
            {
                return "Welcome to Python Language";
            }
        }
    }

    class Ruby : IProgramingLanguages
    {
        public string ProgramingLanguage
        {
            get
            {
                return "Welcome to Ruby Language";
            }
        }
    }

    static class Factory
    {
        public static IProgramingLanguages GetLanguage(string language)
        {
            switch (language)
            {
                case "C":
                    return new C();
                    break;
                case "C++":
                    return new CPlusPlus();
                    break;
                case "C#":
                    return new CSharp();
                    break;
                case "Java":
                    return new Java();
                    break;
                case "JavaScript":
                    return new JavaScript();
                    break;
                case "PHP":
                    return new PHP();
                    break;
                case "Python":
                    return new Python();
                    break;
                case "Ruby":
                    return new Ruby();
                    break;
                default:
                    throw new ApplicationException(string.Format("{0} Class is missing.", language));

            }
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            IProgramingLanguages obj = Factory.GetLanguage("C#");
            Console.WriteLine(obj.ProgramingLanguage);

            Console.ReadKey();
        }
    }

}

Output
Welcome to C# Language

For More Details

No comments:

Post a Comment