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