來到了最後的工廠模式,抽象工廠模式。這個工廠模式應該是工廠模式的終極形態了,顧名思義抽象,它真的挺抽象的,但是如果你可以理解工廠方法模式的話,這個模式應該也不會太難。它與工廠方法模式的區別在於抽象工廠介面不再只生產乙個抽象產品,而是一堆抽象產品,抽象產品介面也不止乙個,而是有很多個。
這個設計模式曾經把我繞的很暈很暈,因為這個模式工廠與產品的關係再也不是乙個工廠生產對應乙個產品了,乙個抽象工廠生產的是一系列各種各樣的產品,具體的工廠實現類實現生產一系列產品的不同實現,抽象產品介面也不只是乙個了,而是一系列,對應抽象工廠中一系列的產品生產。這裡我們模擬生產手機的粗略過程。下面上**!
首先給出產品介面,乙個手機工廠可能需要生產很多配件,這裡只造兩個,分別為機身和cpu配件。
package test;
//產品之機身
public inte***ce bodycomponent
package test;
//產品之cpu
public inte***ce cpucomponent
具體產品的實現。
package test;
//iphone機身
public class iphonebodycomponent implements bodycomponent
}
package test;
//iphone的cpu
public class iphonecpucomponent implements cpucomponent
}
package test;
//華為機身
public class huaweibodycomponent implements bodycomponent
}
package test;
//華為cpu
public class huaweicpucomponent implements cpucomponent
}
接下來是抽象工廠介面,乙個手機工廠。
package test;
public inte***ce mobilefactory
兩個具體工廠的實現。首先是生產蘋果手機的工廠。
package test;
public class iphone implements mobilefactory
@override
public cpucomponent createcpu()
}
然後是生產華為手機的工廠
package test;
public class huawei implements mobilefactory
@override
public cpucomponent createcpu()
}
這樣就完成了乙個抽象工廠模式,接下來看客戶端實現吧。
package test;
public class testa
}
控制台列印
到這裡我們可以看出,抽象產品模式是為了處理產品有多個的情況,而且這些產品大多數都應該是有關係的,就像機身和cpu,都是手機工廠需要生產的產品。而且產品介面的數量,在抽象工廠生成之後就已經固定,就相當於手機工廠生成後已經固定是生產機身和cpu了,對應的產品也就是機身和cpu,而對於不同工廠,是可以生產和對應工廠有關係的機身和cpu,就像蘋果工廠只是生產機身產品中蘋果的機身,cpu產品中蘋果的cpu。
總結一下三篇工廠模式吧。
首先從簡單工廠模式進化到工廠方法模式。簡單工廠模式每增加乙個產品,就需要對工廠類進行修改,違反了開閉原則。而工廠方法模式改善了這一點,具體的工廠類變成乙個工廠介面,之後增加產品只需要增加對應工廠即可,對擴充套件開放,且解決了簡單工廠模式對修改開放的弊端。
再是工廠方法模式到抽象工廠模式。工廠方法模式存在乙個弊端,就是隨著產品的增加工廠也隨之增加,**會越來越多。抽象產品模式則可以生產一系列的產品,就像上述例子,每個工廠都可以生產一堆一系列的產品,很好解決了產品有多個的情況。
設計模式(五) 抽象工廠模式
在設計模式 三 工廠方法模式和設計模式 四 jdk中的那些工廠方法中介紹了工廠方法模式。本文將介紹另外一種工廠模式 抽象工廠模式。在介紹了簡單工廠模式和工廠方法模式之後,相信很多人對工廠模式 如果單獨提到工廠模式,即包括簡單工廠模式 工廠方法模式及本文即將介紹的抽象工廠模式 的思想都有了一定的理解。...
設計模式(五) 抽象工廠模式
為建立一組相關或者是相互依賴的物件提供乙個介面,而不需要指定它們的具體類。乙個物件族有相同的約束時可以使用抽象工廠模式。在工廠方法模式中,我們的具體建立者每次使用都只能建立乙個同型別的物件,假如我們現在需要的是多個不同型別的物件,工廠方法就滿足不了需求了。這時我們可以把多個工廠方法組合到乙個類,這就...
設計模式(五)抽象工廠模式
1.抽象工廠模式定義 抽象工廠模式可以說是是工廠方法模式的公升級版,當需要建立的產品有多個產品線 產品族 時使用抽象工廠模式是比較好的選擇。那什麼是多個產品線呢?拿我們在簡單工廠模式和工廠方法模式中學習的生產電腦的例子來舉例,我們一直都是生產聯想和惠普的電腦,但是電腦也有多個產品線 台式電腦 筆記本...