工廠方法模式——研磨設計模式——跟著cc學設計系列
阿新 • • 發佈:2019-02-12
認識工廠方法模式
1:工廠方法模式的功能
工廠方法的主要功能是讓父類在不知道具體實現的情況下,完成自身的功能呼叫,而具體的實現延遲到子類來實現。
2:實現成抽象類
工廠方法的實現中,通常父類會是一個抽象類,裡面包含建立所需物件的抽象方法,這些抽象方法就是工廠方法
3:實現成具體的類
也可以把父類實現成為一個具體的類,這種情況下,通常是在父類中提供獲取所需物件的預設實現方法,這樣就算沒有具體的子類,也能夠執行 。
4:工廠方法的引數和返回值
工廠方法的實現中,可能需要引數,以便決定到底選用哪一種具體的實現。
一般工廠方法返回的是被建立物件的介面物件,當然也可以是抽象類或者一個具體的類的例項。
5:誰來使用工廠方法建立的物件
(1)在工廠方法模式裡面,應該是Creator中的其它方法在使用工廠方法建立的物件
(2)客戶端應該是使用Creator物件,或者是使用由Creator創建出來的物件,這個時候工廠方法建立的物件,是Creator中的某些方法使用。
(3)在某些情況下,客戶端可能會使用由Creator創建出來的物件,這個時候工廠方法建立的物件,是構成客戶端需要的物件的一部分。
小結一下:在工廠方法模式裡面,客戶端要麼使用Creator物件,要麼使用Creator建立的物件,一般客戶端不直接使用工廠方法。當然也可以直接把工廠方法暴露給客戶端操作,但是一般不這麼做。
工廠方法模式的呼叫順序示意圖
先看看客戶端使用由Creator創建出來的物件情況的呼叫順序示意圖
接下來看看客戶端使用Creator物件時候的呼叫順序示意圖