私は異なったデザインパターンを見始めました。そして今、私はファクトリーデザインパターンに焦点を当てています。私はいくつかの例、youtubeのtuturialsとブログを見て、私はほとんどを得たが、私はまだインターフェイスが必要な理由を得るdidnt。工場設計パターン - なぜインターフェイスが必要ですか?
正式な定義は次のとおりです。
は、オブジェクトを作成するためのインターフェイスを定義しますが、サブクラスがインスタンス化するクラスを を決めましょう。ファクトリメソッドは、クラスがサブクラスに対して のインスタンスを延期することを可能にします。
したがって、インターフェイスはファクトリデザインパターンの重要な部分と思われますが、メインメソッドでコレクションを作成するときにその実際的な場所がわかりました。あなたがそれを望んでいなければ、あなたはそれを削除するだけで(それは可能なところで、以下のコードを見てください)、それはまだ計画どおりに動作します。
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 };
}
}
}
なぜ私はそのインターフェイスが必要ですか?私は複数の抽象的なexplenationsを読んだが、私はそれを得ていないので、私は実用的な答えを好む。
ありがとうございます!
インタフェースは、一般的に、「インタフェース」の文字通りの意味...ない.NETの意味でのインターフェイスを持っています。 –