CatalinRadoi
10/29/2015 - 9:13 AM

Factory Method Example

Factory Method Example

namespace FactoryMethodExample
{
    using System;

    internal class Program
    {
        private static void Main(string[] args)
        {
            var car = new FordFiesta(); // concrete implementation

            // Factory method => No concrete implementation
            var factory = new FordFiestaFactory() as ICreateCars;
            var myCar = factory.CreateACar("red");

            Console.WriteLine("Make: " + myCar.Make + " " + myCar.Model + " " + myCar.Colour);
            Console.ReadLine();
        }

        private interface ICreateCars
        {
            Car CreateACar(string colour);
        }

        private class FordFiestaFactory : ICreateCars
        {
            public Car CreateACar(string colour)
            {
                return new FordFiesta { Colour = colour };
            }
        }

        public abstract class Car
        {
            public string Make { get; set; }

            public string Model { get; set; }

            public string EngineSize { get; set; }

            public string Colour { get; set; }
        }

        public class FordFiesta : Car
        {
            public FordFiesta()
            {
                Make = "Ford";
                Model = "Fiesta";
                EngineSize = "1.1";
            }
        }
    }
}