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

