Factory Design Pattern - Warum-Schnittstelle notwendig?

Schaute ich mir die verschiedenen design-mustern, und jetzt konzentriere ich mich auf das Factory Design Pattern. Ich sah einige Beispiele, youtube-tuturials steht und blogs und ich habe die meisten aber habe ich noch nicht bekommen, warum eine Schnittstelle notwendig ist.

Die offizielle definition ist:

Definiert eine Schnittstelle zur Erstellung eines Objekts, aber lasse Unterklassen entscheiden
welche Klasse instanziiert werden soll. Factory Method ermöglicht einer Klasse zurückstellen
die Instanziierung in Unterklassen.

So eine Schnittstelle scheint ein wichtiger Teil der Factory Design Pattern, aber der einzige Grund, den ich fand wo seine praktische ist, wenn Sie eine Sammlung erstellen, in der main-Methode. Wenn Sie nicht wollen, dass, können Sie einfach löschen (Blick auf den code unten, wo das möglich ist) und es funktioniert immer noch wie geplant.

using System;
using System.Collections.Generic;
using System.Collections;

namespace FactoryDesignPattern
{
    class Program
    {
        static void Main(string[] args)
        {
            var FordFiestaFactory = new FordFiestaFactory();
            var FordFiesta = FordFiestaFactory.CreateCar("Blue");
            Console.WriteLine("Brand: {0} \nModel: {1} \nColor: {2}", FordFiesta.Make, FordFiesta.Model, FordFiesta.Color);
            Console.WriteLine();


            //Inserted this later. Using a collection requires the Interface to be there.
            List<ICreateCars> Cars = new List<ICreateCars>();
            Cars.Add(new FordFiestaFactory());
            Cars.Add(new BMWX5Factory());

            foreach (var Car in Cars)
            {
                var ProductCar = Car.CreateCar("Red");
                Console.WriteLine("Brand: {0} \nModel: {1} \nColor: {2}", ProductCar.Make, ProductCar.Model, ProductCar.Color);
                Console.WriteLine();
            }

            Console.ReadKey();
        }
    }

    public abstract class Car
    {
        public string Make { get; set; }
        public string Model { get; set; }
        public string EngineSize { get; set; }
        public string Color { get; set; }
    }

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

    public class BMWX5 : Car
    {
        public BMWX5()
        {
            Make = "BMW";
            Model = "X5";
            EngineSize = "2.1";
        }
    }

    public interface ICreateCars
    {
        Car CreateCar(string color);
    }

    class FordFiestaFactory : ICreateCars
    {
        public Car CreateCar(string color)
        {
            return new FordFiesta() { Color = color };
        }
    }

    class BMWX5Factory : ICreateCars
    {
        public Car CreateCar(string color)
        {
            return new BMWX5(){ Color = color };
        }
    }
}

Also, warum brauche ich das Interface? Ich lese mehrere abstrakte explenations aber ich habe nicht bekommen, so dass ich lieber praktische Antworten.

Vielen Dank im Voraus!

Schnittstelle in diesem Zusammenhang in der Regel hat die wörtliche Bedeutung von "interface".. nicht eine Schnittstelle der .NET Sinn.

InformationsquelleAutor Hindrik | 2013-12-22

Schreibe einen Kommentar