話說工廠大家應(yīng)該都熟悉吧,工廠就是大批量生產(chǎn)我們想要的產(chǎn)品,當(dāng)一個商店需要添加一類新產(chǎn)品的時候,我們就要去工廠購買我們的產(chǎn)品,工廠方法模式與生活中的工廠大同小異。
(如有異同請指出)
定義:定義一個用于創(chuàng)建對象的接口,讓子類決定實例化哪一個類,工廠方法是一個類的實例化延遲到其子類 解釋:其實工廠方法就是簡單工廠的一個工廠方法模式衍生,解決了許多簡單工廠模式的問題。完全實現(xiàn)‘開放-封閉 原則’,實現(xiàn)了可擴展,我們利用工廠來避免修改原有的類
工廠方法模式利用了依賴倒轉(zhuǎn)原則,我們把工廠類抽象出一個勒口,這個接口只有一個方法,就是創(chuàng)建抽象產(chǎn)品的工廠方法,然后所有生產(chǎn)具體產(chǎn)品的方法都去實現(xiàn)這個接口,當(dāng)我們增加產(chǎn)品的時候就不需要去更改原有的工廠類了,直接添加就可以。 如圖:
代理類
//雷鋒工廠接口, interface IFactory { LeiFeng CreateLeiFeng(); } //學(xué)雷鋒的大學(xué)生工廠 class UndergraduateFactory:IFactory { public LeiFeng CreateLeiFeng() { //調(diào)用子類的方法 return new Undergraduate(); } } //社區(qū)志愿者工廠 class VolunteerFactory:IFactory { public LeiFeng CreateLeiFeng() { return new Volunteer(); } }客戶端
static void Main(string[] args) { //通過工廠實例化一個大學(xué)雷鋒 IFactory factory = new UndergraduateFactory(); //調(diào)取雷鋒的方法 LeiFeng student = factory.CreateLeiFeng(); student.BuyRice(); student.Swee(); student.Wash();新聞熱點
疑難解答