日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

今天俺要说一说工厂方法模式(Factory)

發(fā)布時(shí)間:2025/3/20 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 今天俺要说一说工厂方法模式(Factory) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前言;工廠方法模式又叫做工廠模式,它是23個(gè)設(shè)計(jì)模式中的一個(gè),它解決的還是在軟件設(shè)計(jì)中創(chuàng)建對(duì)象的問題,它可以更好的解決用戶需求的變化.

問題;在簡(jiǎn)單工廠模式中,我們將實(shí)例化的對(duì)象全部放于Factory.cs(工廠類),在我們的預(yù)知下我們可以實(shí)例化對(duì)象,但是我們的預(yù)知是有限的,而客戶的需求是無限的,這樣就出現(xiàn)了問題,一但客戶的需求過于復(fù)雜,我們就要修改源碼了,這是設(shè)計(jì)模式不允許的.

定義:在工廠模式中,父類負(fù)責(zé)定義創(chuàng)建對(duì)象的接口,子類負(fù)責(zé)new具體對(duì)象。

?

現(xiàn)實(shí)中的例子:我們舉一個(gè)例子,這個(gè)例子和簡(jiǎn)單工廠的例子有些不同。

  據(jù)說清朝有個(gè)皇帝,它非常奢侈,每個(gè)衣服都有一個(gè)宮女負(fù)責(zé),這樣一來,每增加一種衣服,就得多出一個(gè)宮女,但她們各付其職,互不影響。? ?

?

分析:實(shí)現(xiàn)的功能,可以根據(jù)皇帝的需求,創(chuàng)建宮女去拿所對(duì)應(yīng)的衣服,如果皇帝太奢侈,這種衣服還沒有,只需要添加一個(gè)宮女就可以滿足他的需求了,每個(gè)宮女只要有一種衣服即可(高內(nèi)聚),要增加衣服,對(duì)于原來宮女和衣服來說,誰都不影響誰。

?

商品系列

?

?商品接口ICoat.cs

public interface ICoat {void ShowCoat();
}

具體商品:商務(wù)上衣

public class BusinessCoat : ICoat{public void ShowCoat(){Console.Write("這件是商務(wù)上衣");//throw new NotImplementedException(); }}

具體商品:時(shí)尚上衣

public class BusinessFactory : IFactory{public ICoat CreateCoat(){return new BusinessCoat();///throw new NotImplementedException();}}

 

下面是工廠系列

總廠房:

public interface IFactory{ICoat CreateCoat();}

時(shí)尚上衣工廠

public class FashionFactory : IFactory{public ICoat CreateCoat(){return new FashionCoat();}}

商務(wù)上衣工廠

public class BusinessFactory : IFactory{public ICoat CreateCoat(){return new BusinessCoat();///throw new NotImplementedException(); }}

?

皇帝:

static void Main(string[] args){BusinessCoat coat = new BusinessCoat();coat.ShowCoat();Console.ReadLine();} 架構(gòu)圖:

?

工廠方法模式使用繼承自抽象工廠角色的多個(gè)子類來代替簡(jiǎn)單工廠模式中的“上帝類”。正如上面所說,這樣便分擔(dān)了對(duì)象承受的壓力;而且這樣使得結(jié)構(gòu)變得靈活 起來——當(dāng)有新的產(chǎn)品產(chǎn)生時(shí),只要按照抽象產(chǎn)品角色、抽象工廠角色提供的合同來生成,那么就可以被客戶使用,而不必去修改任何已有的代 碼。可以看出工廠角色的結(jié)構(gòu)也是符合開閉原則的! ? 缺點(diǎn):添加一個(gè)產(chǎn)品就要添加一個(gè)工廠類,這使程序的架構(gòu)非常負(fù)責(zé),從而使系統(tǒng)閱讀起開非常困難。

轉(zhuǎn)載于:https://www.cnblogs.com/ZaraNet/p/9563776.html

總結(jié)

以上是生活随笔為你收集整理的今天俺要说一说工厂方法模式(Factory)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。