1般甲、工廠模式可以分為三類:
1)簡單工廠模式(Simple Factory)
2)工廠方法模式(Factory Method)
3)抽象工廠模式(Abstract Factory)
2、抽象工廠模式與工廠方法模式的區(qū)別:
工廠方法模式:
一個抽象產品類,可以派生出多個具體產品類涩搓。
一個抽象工廠類,可以派生出多個具體工廠類。
每個具體工廠類只能創(chuàng)建一個具體產品類的實例。
抽象工廠模式:
多個抽象產品類睦番,每個抽象產品類可以派生出多個具體產品類。
一個抽象工廠類耍属,可以派生出多個具體工廠類托嚣。
每個具體工廠類可以創(chuàng)建多個具體產品類的實例。
區(qū)別:
工廠方法模式只有一個抽象產品類厚骗,而抽象工廠模式有多個示启。
工廠方法模式的具體工廠類只能創(chuàng)建一個具體產品類的實例,而抽象工廠模式可以創(chuàng)建多個领舰。
3夫嗓、簡單工廠模式(靜態(tài)工廠方法模式):
建立一個工廠(一個函數(shù)或一個類方法)來制造新的對象。它存在的目的很簡單:定義一個用于創(chuàng)建對象的接口冲秽。
比如:客戶需要知道怎么去創(chuàng)建一款車,客戶和車就緊密耦合在一起了.為了降低耦合,就出現(xiàn)了工廠類,把創(chuàng)建寶馬的操作細節(jié)都放到了工廠里面去,客戶直接使用工廠的創(chuàng)建工廠方法,傳入想要的寶馬車型號就行了,而不必去知道創(chuàng)建的細節(jié).這就是工業(yè)革命了:簡單工廠模式:
4舍咖、工廠方法模式:
工廠方法模式去掉了簡單工廠模式中工廠方法的靜態(tài)屬性,使得它可以被子類繼承锉桑。這樣在簡單工廠模式里集中在工廠方法上的壓力可以由工廠方法模式里不同的工廠子類來分擔谎仲。
例如:當客戶不再滿足現(xiàn)有的車型號的時候,想要一種速度快的新型車
在以下情況要使用到工廠方法模式:
1)當客戶程序不需要知道要使用對象的創(chuàng)建過程刨仑。
2)客戶程序使用的對象存在變動的可能郑诺,或者根本就不知道使用哪一個具體的對象。
5杉武、抽象工廠模式:
抽象工廠模式和工廠方法模式的區(qū)別就在于需要創(chuàng)建對象的復雜程度上辙诞。而且抽象工廠模式是三個里面最為抽象、最具一般性的轻抱。
例如:隨著客戶的要求越來越高飞涂,寶馬車需要配置空調。于是這個工廠開始生產寶馬車和配置需要的空調祈搜。這時候工廠有二個系列的產品:寶馬車和空調.寶馬車必須使用對應的空調才能使用.這時候分別使用一個車工廠和一個空調工廠都不能滿足我們的需求,我們必須確認車跟空調的對應關系较店。因此把車工廠跟空調工廠聯(lián)系在一起。因此出現(xiàn)了抽象工廠模式容燕。
抽象工廠模式的用意為:給客戶端提供一個接口梁呈,可以創(chuàng)建多個產品族中的產品對象 ,而且使用抽象工廠模式還要滿足一下條件:
1)系統(tǒng)中有多個產品族蘸秘,而系統(tǒng)一次只可能消費其中一族產品官卡。
2)同屬于同一個產品族的產品一起使用。