C#設計模式-抽象工廠模式
阿新 • • 發佈:2018-12-18
using System; namespace TestCS { class Program { static void Main(string[] args) { Factory factory0 = new MaseratiFactory(); Engine engine0 = factory0.CreateEngine(); Underpan underpan0 = factory0.CreateUnderpan(); Console.WriteLine("Create Engine " + engine0.GetName()); Console.WriteLine("Create Underpan " + underpan0.GetName()); Factory factory1 = new BMWFactory(); Engine engine1 = factory1.CreateEngine(); Underpan underpan1 = factory1.CreateUnderpan(); Console.WriteLine("Create Engine " + engine1.GetName()); Console.WriteLine("Create Underpan " + underpan1.GetName()); Console.ReadKey(); } } abstract class Factory { public abstract Engine CreateEngine(); public abstract Underpan CreateUnderpan(); } class MaseratiFactory : Factory { public override Engine CreateEngine() { return new MaseratiEngine(); } public override Underpan CreateUnderpan() { return new MaseratiUnderpan(); } } class BMWFactory : Factory { public override Engine CreateEngine() { return new BMWEngine(); } public override Underpan CreateUnderpan() { return new BMWUnderpan(); } } abstract class Engine { public abstract string GetName(); } class BMWEngine : Engine { public override string GetName() { return "BMW Engine"; } } class MaseratiEngine : Engine { public override string GetName() { return "Maserati Engine"; } } abstract class Underpan { public abstract string GetName(); } class MaseratiUnderpan : Underpan { public override string GetName() { return "Maserati Underpan"; } } class BMWUnderpan : Underpan { public override string GetName() { return "BMW Underpan"; } } }