簡單工廠模式根據提供的數據或者參數返回幾個可能的類中的一個實例,說通俗點有點像面向對象編程中的多態性,一個基類,有多個派生類,在另外的調用程序中,根據參數來決定返回這個基類的哪個具體的派生類,返回值為基類類型,因為基類的引用可以指向派生類對象,而且這些所有的派生類都包含有基類的函數,也就是說派生類中有相同的函數,但是函數的實現可能不同。
下面我只是來演示一下簡單工廠模式,代碼不會太復雜。所以大家可以使用Submile Text工具。
使用方法博客文章鏈接http://www.cnblogs.com/aehyok/archive/2013/05/05/3059087.html可直接編譯運行查看效果哦。
假定A是一個基類,AB和AC都是派生於A的派生類,XFactory類中根據提供給它的參數來決定返回AB或者AC 類的哪一個,返回的是哪個類的實例對於編程者來說並不是那麼重要,因為這些類有著相同的方法,編程者需要做的就是通過基類引用直接調用方法,不用去關心到底返回的是哪個派生類,因為這些類有相同的方法,只是實現不同而已。如何決定返回哪一個派生類,取決於工廠的設計,該方法可以是非常復雜的函數,也可以是簡單的函數。
接下來我們就通過簡單加減乘除的計算器來了解和實現簡單工廠模式。
第一步:根據上面的小例子首先我來創建一個基類A
NumberA { ; NumberB { ; result =
第二步:然後創建派生類AB AC即加、減、乘、除四個派生類。
result = = .NumberA + result = = .NumberA - result = = .NumberA * result = (.NumberB == Exception(= .NumberA /
第三步:創建XFactory來返回AB、AC。
Operation CreateOperate(= = = = =
第四步:先來一個加法的調用:
Main(= OperationFactory.CreateOperate(==
運行結果為
在此簡單工廠模式,其實使用了面向對象中的幾點編程思想。
創建Operation其實是對業務的封裝。
然後實現加減乘除類都繼承Operation並重寫各自應有的業務邏輯。
我們如果再加一個算法開根(sqrt)算法,那麼只需要新增加一個繼承Operation的類,然後在簡單工廠類中添加一個分支即可。這裡我們發現這是易擴展(松耦合)、易維護。