[Design Pattern] Factory
工廠模式 - Factory
提供一個工廠介面,藉由工廠介面,將產生實體的功能,交由子類別各自實現。
設計一個簡易的汽車工廠介面
設計一個汽車工廠介面,該工廠會設定汽車的品牌名與車子的速度
public interface ICar
{
string Vendor();
int Speed();
}
產物(類別)繼承工廠,並實作其特性
汽車由工廠介面,來分別實作其特性。
public class Honda : ICar
{
public string Vendor()
{
return "Honda";
}
public int Speed()
{
return 100;
}
}
...
public class Toyota : ICar
{
public string Vendor()
{
return "Toyota";
}
public int Speed()
{
return 80;
}
}
設計工廠中心介面
設計工廠中心介面,由該工廠來生產汽車模型。
public interface ICarFactory
{
ICar CarMake();
}
各產線,各自生產
各產線取得車子的模型後,各自生產自己的車子。
public class CarMadeHonda : ICarFactory
{
public ICar CarMake()
{
return new Honda();
}
}
public class CarMadeToyota : ICarFactory
{
public ICar CarMake()
{
return new Toyota();
}
}
產線生產(主程式)
透過工廠模式,告訴產線說,我現在想生產什麼樣的車子,由產線各自生產。
class Program
{
static void Main(string[] args)
{
ICarFactory hondaFactory = new CarMadeHonda();
ICarFactory toyotaFactory = new CarMadeToyota();
var honda = hondaFactory.CarMake();
var toyota = toyotaFactory.CarMake();
Console.WriteLine("What's Car : {0}", honda.Vendor());
Console.WriteLine("Honda Speed : {0}", honda.Speed());
Console.WriteLine("What's Car : {0}", toyota.Vendor());
Console.WriteLine("Toyota Speed : {0}", toyota.Speed());
Console.ReadLine();
}
}
留言
張貼留言