工廠設計模式(2) ——枚舉實現工廠模式。
工廠方法模式的核心負責創建所有實例的內部邏輯。工廠類可以被外界直接調用來創建所需的產品對象。
所有創建對象的父類負責描述所有實例的所有公共接口。
創建的具體實例對象。
每個枚舉項都是枚舉類的壹個實例對象,那麽能否定義壹個方法為每個枚舉項生成對應的乘積?
1.抽象產品角色
2.特定產品角色
3.產品工廠
4.呼叫方法
雖然枚舉類型不能被繼承,但是它的方法可以用abstract來修飾,這意味著枚舉是壹個抽象枚舉對象,每個枚舉項都需要自己實現方法。
1.工廠方法
2.給全班打電話
1.避免虛假呼叫
壹般的靜態工廠模式需要接受客戶端的參數來選擇構建哪個具體的產品,這必然會導致錯誤(比如空值問題,類對象不存在)。而枚舉類型生成的工廠模式不存在這個問題,也不需要傳遞任何參數,只需要選擇生成什麽類型的產品即可。
2.性能好,使用方便。
枚舉類型的計算是基於int類型的計算,這是最基本的運算,性能當然快。
3.減少類之間的耦合
以普通方式實現的工廠模式,不管生產方法接收的是Class、String、Int什麽類型,都會成為客戶端的負擔。客戶並不需要這些類,但由於工廠方法的限制,必須輸入這些類。其實也違背了Lod(最少知識原則):壹個對象對其他對象的了解應該是最少的。