程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 抽象工廠模式造車,抽象工廠造車

抽象工廠模式造車,抽象工廠造車

編輯:C#入門知識

抽象工廠模式造車,抽象工廠造車


 

可以用抽象工廠模式來造車。

 

車的品牌有很多,而且車的屬性也不少,比如車的類型、排量、門的數量,等等。可以提煉出有關車的一個抽象類:

 

    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、通過抽象工廠造車,必須把所有的細節都設計在代表車的抽象類中,擴展性不好

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved