C#通過(guò)抽象工廠模式造車(chē)
可以用抽象工廠模式來(lái)造車(chē)。
車(chē)的品牌有很多,而且車(chē)的屬性也不少,比如車(chē)的類(lèi)型、排量、門(mén)的數(shù)量,等等??梢蕴釤挸鲇嘘P(guān)車(chē)的一個(gè)抽象類(lèi):
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(); }
既然是抽象工廠,提煉出一個(gè)造車(chē)的接口:
public interface ICarFactory { Car ProduceCar(); }
寫(xiě)一個(gè)Car的派生類(lèi):
public class MyCar : Car { public MyCar() { Model = "型號(hào)001"; Engine = "發(fā)動(dòng)機(jī)V"; Transmission = "排量1"; Body = "SUV"; Doors = 4; Accessores.Add("內(nèi)飾"); Accessores.Add("外飾"); } public override void ShowCarInfo() { Console.WriteLine(Model); Console.WriteLine(Engine); Console.WriteLine(Body); Console.WriteLine("門(mén)數(shù)量:" + Doors); Console.WriteLine("包括:"); foreach (var accessory in Accessores) { Console.WriteLine("\t{0}", accessory); } } }
MyCar需要一個(gè)對(duì)應(yīng)的具體工廠來(lái)造車(chē)。寫(xiě)一個(gè)具體工廠類(lèi),實(shí)現(xiàn)ICarFactory接口。
public class MyFactory : ICarFactory { public Car ProduceCar() { return new MyCar(); } }
在客戶端,如果要造車(chē),就找具體工廠就可以了。
static void Main(string[] args) { ICarFactory carFactory = new MyFactory(); carFactory.ProduceCar().ShowCarInfo(); Console.ReadKey(); }
總結(jié):
1、需要工廠生產(chǎn)對(duì)象的抽象類(lèi)以及派生類(lèi)
2、需要一個(gè)抽象工廠接口
3、通過(guò)抽象工廠造車(chē),必須把所有的細(xì)節(jié)都設(shè)計(jì)在代表車(chē)的抽象類(lèi)中,擴(kuò)展性不好
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接
相關(guān)文章
C#使用semaphore來(lái)管理異步下載請(qǐng)求的方法
這篇文章主要介紹了C#使用semaphore來(lái)管理異步下載請(qǐng)求的方法,涉及C#使用semaphore實(shí)現(xiàn)多線程管理的技巧,需要的朋友可以參考下2015-06-06winform攔截關(guān)閉按鈕觸發(fā)的事件示例
這篇文章主要介紹了c# winform攔截關(guān)閉按鈕觸發(fā)的事件示例,大家參考使用吧2014-01-01c#利用webmail郵件系統(tǒng)發(fā)送郵件示例分享
在C#中發(fā)送郵件的方式有2種,一種是使用webmail方式進(jìn)行發(fā)送,另外一種就是采用netmail發(fā)送的方式,這篇文章介紹了c#使用webmail方式發(fā)送郵件示例,大家參考使用吧2014-01-01C#模擬http 發(fā)送post或get請(qǐng)求的簡(jiǎn)單實(shí)例
下面小編就為大家?guī)?lái)一篇C#模擬http 發(fā)送post或get請(qǐng)求的簡(jiǎn)單實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-06-06C#動(dòng)態(tài)webservice調(diào)用接口
動(dòng)態(tài)調(diào)用webservice,就可以不用添加web引用了,上線的話也只是需要改一下wsdl地址就可以了2015-05-05C#利用delegate實(shí)現(xiàn)Javascript的each方法
這篇文章主要為大家介紹了介紹了C#利用delegate實(shí)現(xiàn)Javascript的each方法,感興趣的朋友可以參考一下2016-01-01c#靜態(tài)方法和非靜態(tài)方法詳細(xì)介紹
這篇文章主要介紹了c#靜態(tài)方法和非靜態(tài)方法,需要的朋友可以參考下2014-02-02