工廠方法模式(C++描述)
阿新 • • 發佈:2019-02-12
工廠方法模式是對簡單工廠模式的改進。首先看看簡單工廠模式的缺點。
軟體是之所以區別於程式,是因為它可以被人們使用,並能間接創造效益。需求是軟體開發的核心,忽視使用者的需求,軟體本身就沒有存在的價值。
假如Nokia又新開發了一款新手機N99,對於採用簡單工廠模式設計的系統,我們的做法是:
1.新增一個CN99類繼承自CNokia抽象類,這個符合OCP原則。
注:OCP:Open-Closed Principle開閉原則。OCP關注的是靈活性,改動是通過增加程式碼進行的,而不是改動現有的程式碼。對擴充套件開放,對修改關閉。
2.修改靜態工廠方法中的判斷邏輯,增加對N99的建立程式碼。這個明顯違背OCP。
改進簡單工廠模式,我們要做的就是克服2中的缺點。
下面的工廠方法模式,新增一個N96的工廠類,不用修改已有的程式碼,完全支援OCP原則,而且工廠方法模式也完全遵守里氏替換原則,LSP原則是OCP成為可能的重要原則。
注:Liskov Substitution Principle(里氏代換原則):子型別(subtype)必須能夠替換它們的基型別。
雖然工廠方法模式是對簡單工廠模式缺點的該進,這個缺點就是違背軟體設計原則OCP。但是並不是工廠方法模式就優於簡單工廠模式,只不過後者更符合常規的軟體設計理念。