一個工廠通過方法創(chuàng)建多個產(chǎn)品族壳。
工廠模式:創(chuàng)建對象時不會對客戶端暴露創(chuàng)建邏輯趣些,并且通過使用一個共同的接口來指向新創(chuàng)建的對象。
意圖:定義一個創(chuàng)建對象的接口拢操,讓子類決定實例化哪一個工廠類舶替。
主要解決:主要解決接口選擇的問題。
何時使用:明確的計劃不同條件下創(chuàng)建不同實例時舔庶。
如何解決:讓其子類實現(xiàn)工廠接口,返回的也是一個抽象的產(chǎn)品惕橙。
優(yōu)點:1.一個調(diào)用者想創(chuàng)建一個對象,只要知道其名稱就可以了亲配。2.擴展性高吼虎,如果想增加一個產(chǎn)品苍鲜,之啊喲擴展一個工廠類就可以。3.屏蔽產(chǎn)品的具體實現(xiàn)混滔,調(diào)用者只關(guān)心產(chǎn)品的接口
缺點:每次增加一個產(chǎn)品時坯屿,都需要增加一個具體類和對象,實現(xiàn)工廠领跛,是的系統(tǒng)中類的個數(shù)成倍增加,在一定程度上增加了系統(tǒng)的復(fù)雜度喊括,同時也增加了系統(tǒng)具體類的依賴郑什。
使用場景:設(shè)計一個連接服務(wù)器的框架,需要三個協(xié)議:"pop3","imap","http",可以把這三個作為產(chǎn)品類蒲肋,共同實現(xiàn)一個接口。
注意事項:
1.作為一種創(chuàng)建類模式兜粘,在任何需要生成復(fù)雜對象的地方,都可以使用工廠方法模式。
2.復(fù)雜對象適合使用工廠模式距糖,而簡單對象,特別是只需要通過new就可以完成創(chuàng)建的對象悍引,無需使用工廠模式趣斤。
3.如果要使用工廠模式浓领,就需要引入一個工廠類,會增加系統(tǒng)的復(fù)雜度联贩。
工廠模式