一寸宏、抽象工廠UML圖
二、產(chǎn)品族偿曙、產(chǎn)品結(jié)構(gòu)關(guān)鍵詞理解
1氮凝、是指位于不同產(chǎn)品等級結(jié)構(gòu)中,功能相關(guān)聯(lián)的產(chǎn)品組成的家族望忆。一般是位于不同的等級結(jié)構(gòu)中的相同位置上罩阵。顯然,每一個產(chǎn)品族中含有產(chǎn)品的數(shù)目启摄,與產(chǎn)品等級結(jié)構(gòu)的數(shù)目是相等的稿壁,形成一個二維的坐標系,水平坐標是產(chǎn)品等級結(jié)構(gòu)歉备,縱坐標是產(chǎn)品族傅是。叫做相圖。
二蕾羊、抽象工廠使用場景
1喧笔、例:在現(xiàn)實生活中的汽車牌照沒有咱們例子中那么簡單锯茄。除了國家規(guī)定不同類型的車輛所上的牌照不同意外祖驱,不同省份的牌照生成規(guī)則也不一樣,最明顯的就是牌照號中那唯一的漢字亥宿,比如北京市的牌照就是“京X·XXXXX”利凑,而河北省的牌照就是“冀X·XXXXX”浆劲,當(dāng)然同一省份不同地區(qū)的牌照在漢字后面的那個字母也不一樣嫌术。
2、具體實現(xiàn)
車牌號碼:
工廠抽象 類: 車牌號碼工廠抽象類
具體工廠類 :北京車牌工廠梳侨、河北車牌工廠類 (繼承自工廠抽象)
藍色牌照抽象類
北京藍色車牌生成類(繼承自藍色牌照抽象類)
河北藍色車牌生成類(繼承自藍色牌照抽象類)
黃色牌照抽象類
北京黃色車牌生成類(繼承黃色牌照抽象類)
河北黃色車牌生成類(繼承黃色牌照抽象類)
號碼生成算法類 (生成隨機號碼等方法蛉威、被具體的生成類引用:北京黃色車牌生成類等)
3、調(diào)用
例:
藍色牌照抽象類 = [北京藍色車牌生成類 創(chuàng)建藍色車牌方法]
二走哺、抽象工廠優(yōu)缺點
1蚯嫌、抽象工廠模式的優(yōu)點
抽象工廠模式除了具有工廠方法模式的優(yōu)點外,最主要的優(yōu)點就是可以在類的內(nèi)部對產(chǎn)品族進行約束丙躏。所謂的產(chǎn)品族择示,一般或多或少的都存在一定的關(guān)聯(lián),抽象工廠模式就可以在類內(nèi)部對產(chǎn)品族的關(guān)聯(lián)關(guān)系進行定義和描述晒旅,而不必專門引入一個新的類來進行管理栅盲。
2、抽象工廠模式的缺點
產(chǎn)品族的擴展將是一件十分費力的事情废恋,假如產(chǎn)品族中需要增加一個新的產(chǎn)品谈秫,則幾乎所有的工廠類都需要進行修改。所以使用抽象工廠模式時鱼鼓,對產(chǎn)品等級結(jié)構(gòu)的劃分是非常重要的拟烫。
3、適用場景
當(dāng)需要創(chuàng)建的對象是一系列相互關(guān)聯(lián)或相互依賴的產(chǎn)品族時迄本,便可以使用抽象工廠模式硕淑。說的更明白一點,就是一個繼承體系中嘉赎,如果存在著多個等級結(jié)構(gòu)(即存在著多個抽象類)置媳,并且分屬各個等級結(jié)構(gòu)中的實現(xiàn)類之間存在著一定的關(guān)聯(lián)或者約束,就可以使用抽象工廠模式公条。假如各個等級結(jié)構(gòu)中的實現(xiàn)類之間不存在關(guān)聯(lián)或約束拇囊,則使用多個獨立的工廠來對產(chǎn)品進行創(chuàng)建,則更合適一點靶橱。