可以用抽象工廠模式來造車。
車的品牌有很多,而且車的屬性也不少,比如車的類型、排量、門的數量,等等。可以提煉出有關車的一個抽象類:
public abstract class Car{public string Model { get; set; }public string Engine { get; set; }public string Transmission { get; set; }public string Body { get; set; }public int Doors { get; set; }public List<string> Accessores = new List<string>();public abstract void ShowCarInfo();}
既然是抽象工廠,提煉出一個造車的接口:
public interface ICarFactory{Car ProduceCar();}
寫一個Car的派生類:
public class MyCar : Car{public MyCar(){Model = "型號001";Engine = "發動機V";Transmission = "排量1";Body = "SUV";Doors = 4;Accessores.Add("內飾");Accessores.Add("外飾");}public override void ShowCarInfo(){Console.WriteLine(Model);Console.WriteLine(Engine);Console.WriteLine(Body);Console.WriteLine("門數量:" + Doors);Console.WriteLine("包括:");foreach (var accessory in Accessores){Console.WriteLine("\t{0}", accessory);}}}
MyCar需要一個對應的具體工廠來造車。寫一個具體工廠類,實現ICarFactory接口。
public class MyFactory : ICarFactory{public Car ProduceCar(){return new MyCar();}}
在客戶端,如果要造車,就找具體工廠就可以了。
static void Main(string[] args){ICarFactory carFactory = new MyFactory();carFactory.ProduceCar().ShowCarInfo();Console.ReadKey();}
總結:
1、需要工廠生產對象的抽象類以及派生類
2、需要一個抽象工廠接口
3、通過抽象工廠造車,必須把所有的細節都設計在代表車的抽象類中,擴展性不好