1. 程式人生 > >工廠模式與抽象工廠在實際專案中的應用

工廠模式與抽象工廠在實際專案中的應用

在面向物件程式設計中, 最通常的方法是一個new操作符產生一個物件例項,new操作符就是用來構造物件例項的。但是在一些情況下, new操作符直接生成物件會帶來一些問題。舉例來說, 許多型別物件的創造需要一系列的步驟: 你可能需要計算或取得物件的初始設定;

比如在我的一個報表系統中,有一種報表生成事件,該事件實現run介面,實現具體的報表生成操作,但是它不能被new出來,因為它需要依賴spring的依賴注入的各種service物件.  所以這時就需要工廠模式

類圖:


抽象的基礎報表匯出事件


其中的一個子類:


工廠類:


生產報表事件:

ReportEvent reportEvent 
= ReportEventFactory.getInstance().createEvent(DhOrderReportEvent.class,parameter);
將事件放到佇列裡
boolean add = TaskQueueUtil.reportQueue.add(reportEvent);
取出報表事件,執行操作
ReportEvent reportEvent = TaskQueueUtil.reportQueue.poll();
if (reportEvent!=null) {
    threadPoolTaskExecutor.execute(reportEvent);
}

工廠模式解決的問題:將同一類的物件的建立收整合一個工廠類,通過引數來區分實際生產的物件,其實,工廠模式是面向介面程式設計的一種實現.

還有一種例子是java的jdbc實現,操作資料庫的統一介面,再有一個工廠類,由工廠類的引數來決定生產的物件是面向mysql的還是oracle的.

案例:報表系統的報表事件,cxf客戶端,java的jdbc實現.

cxf客戶端:由工廠來統一生產各介面的具體實現,具體實現很複雜,封裝起來.


抽象工廠方法  其實是  工廠方法的一種升級.  應用於更復雜的業務場景.