歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> 跟JBPM學習設計模式

跟JBPM學習設計模式

日期:2017/3/1 9:43:25   编辑:Linux編程

模式簡介

簡單工廠模式是類的創建模式,其專門負責將大量擁有共同接口或者基類的產品類進行實例化。簡單工廠模式由工廠類運行時根據傳入的參數動態的決定需要實例化的類,這樣客戶只需要了解產品的基類,解除客戶對具體產品類的依賴。簡單工廠模式的結構如下圖所示

圖 1. 簡單工廠模式結構圖

從圖中可以看出,簡單工廠模式主要涉及一下三種結構角色

1. 工廠類,其有客戶端直接調用,並根據具體的業務邏輯要求創建相應的產品對象實例;

2. 產品基類,所有具體的產品類的基類或者接口,封裝所有具體產品共享的行為(和數據), 客戶需要了解產品基類;

3. 具體的產品類,本模式需要創建的實例的類型;

JBPM4.4部署在Tomcat6以上的版本jar包沖突 http://www.linuxidc.com/Linux/2014-04/99476.htm

JBPM流程實例(PV)Process Variables http://www.linuxidc.com/Linux/2014-06/102859.htm

JBPM流程實例(PI)Process Instance http://www.linuxidc.com/Linux/2014-06/102858.htm

JBPM流程部署校驗 http://www.linuxidc.com/Linux/2014-06/102860.htm

JBPM中的簡單工廠模式

JBPM中對流程引擎的對象的實例化使用了簡單工廠模式。具體的模式結構圖如下

圖 2. JBPM簡單工廠結構圖

從圖中我們可以看到ProcessEngine充當了產品基類的角色,由於流程引擎在JBPM中所處的特殊地位,所以這個接口需要能夠獲取各種服務和業務中需要使用的一些對象實例等。

具體的產品類是ProcessEngineImpl和SpringProcessEngine類,JBPM的流程引擎可以使用spring作為承載的環境,默認情況下會使用前者,如果我們需要使用spring,只需要在jbpm.cfg.xml中引入jbpm.tx.spring.cfg.xml即可。

工廠類的角色是由ConfigurationImpl來實現的,其根據配置文件中是否啟用spring來實例化具體的流程引擎對象。

其實SpringProcessEngine本身也是一個精簡版的簡單工廠模式,其自己負責實例化自己,其同時擔當了工廠和具體產品的角色。具體的類圖結構如下

圖 3. SpringProcessEngine精簡版簡單工廠設計模式

簡單工廠模式的優劣

該模式的核心是工廠類,其負責必要的邏輯判斷(反射的話可以不需要),決定最終創建哪一個產品類的實例。客戶是不負責產品類的實例化,而是僅僅使用返回的產品,實現了兩者間的職責分離。

該模式中,工廠類負責所有具體產品類的創建邏輯,所以其就對所有的產品類形成了強烈的依賴,如果產品類很多,可能對工廠類的修改就會影響到整個系統。

當我們擴展了新的產品類的時候,需要修改工廠類,違反了開閉原則。

更多詳情見請繼續閱讀下一頁的精彩內容: http://www.linuxidc.com/Linux/2014-06/102861p2.htm

Copyright © Linux教程網 All Rights Reserved