前言
設計模式能夠幫助我們設計出健壯,低耦合性的代碼,從此和高耦合的代碼say goodbye!在所有的的設計模式中,簡單工廠算是我們平時接觸比較多的吧,多線程中的消費者工廠類與生産者工廠類應該算是接觸最早的設計模式,簡單工廠模式要解決的首要問題就是降低程式之間的耦合度,通過java中的封裝、繼承與多态實作解耦。通過使用簡單工廠模式,我們設計的代碼更易于維護和複用
在進入正題之前我們先看一下問題背景:
某公司開發了一個a軟體,資料庫使用的是sqlserver。後由于客戶要求需要使用oracle資料庫,原來的資料要遷移到oracle中,在遷移的過程中遇到很多問題,比如文法錯誤,關鍵字濫用,函數不支援等問題。請設計一組程式,實作資料的無縫遷移。
為了簡單起見,我們先寫一組通路使用者資訊的資料庫通路程式,使用者有id和name屬性,實作使用者資訊的查找(根據id)與添加功能
這裡隻是模拟程式的運作過程,并不真正從資料庫中擷取使用者資訊
這裡由于直接在用戶端建立的sqlserver對象,客戶一旦使用其他資料庫就意味着原來的su對象是無效的,全部都得重來。當資料量龐大的時候,無疑會帶來巨大工作量,如果能夠在用戶端根據使用者選擇的資料庫對象靈活建立相應的資料庫,無疑會減少很多工作量。
使用簡單工廠的大緻思路是:根據使用者選擇的資料庫類型,建立相應的資料庫對象,在用戶端隻要傳入這個參數,具體生産對象的過程由工廠去實作。
最後的測試結果:
請輸入你要建立的資料庫類型: oracle 使用oracle添加使用者 使用oracle通過id找到使用者
這裡通過封裝,把建立執行個體的過程交給工廠去完成,用戶端隻需要确定選擇的資料庫類型,dbfactory就會生成一個資料庫執行個體,使用者拿着這個執行個體就可以進行資料庫的操作了。通過這種方式,用戶端的操作與具體的資料庫建立就已經解耦了。
總結簡單工廠模式,有以下好處:
* 可以根據用戶端的選擇動态建立相應的執行個體,消除了對具體産品的依賴
* 是java封裝、繼承和多态的運用,展現了oop的程式設計思想