已經轉移到
好·色之徒--我的博客、我的生活在這邊記述中,將詳細描述整個系統中處于核心地位的一些類。
首先需要說明的是底層數據訪問接口:ICommonDAO--系統訪問數據庫的接口,所有對數據庫的訪問都通過此類來完成。里面定義了對數據庫操作的相關接口方法,例如:save、update、delete等等。
說明:本來作為interface應該保持獨立性,不應該涉及到具體實現的一些特征,由于系統采用Hibernate來實現底層操作,所以在interface中也加入了一些Hibernate所具有的一些方法,比如findByCriteria、getCountByCriteria。當然在設計中如果可以避免就盡量避免
下一個要介紹的和ICommonDAO緊密關聯,就是它的具體實現CommonDAO
CommonDAO繼承了HibernateDaoSupport,實現了ICommonDAO接口。繼承HibernateDaoSupport,即具體實現采用了hibernate,而且HibernateDaoSupport中的getHibernateTemplate()方法可以方便的對數據庫進行操作,舉一個例子:
public void save(final Object entity) { getHibernateTemplate().save(entity); } 保存一條記錄就這么簡單
關于ICommonDAO、CommonDAO的命名,由于系統已經確定采用hibernate,所以沒有特定把實現命名為HibernateDAO,如果系統需要采用不同的數據層實現,比如JDO、JPA等,那么接口中制定的方法就要相對中立,沒有了現在設計中所涉及到的hibernate特性了。這個希望有所注意。
關于數據層的類就這兩個了,下面說一下表現層struts,很簡單,就定義一個抽象類BaseAction,繼承DispatchAction,里面為空,沒有作任何方法(當然可以在這里面做一些特殊的處理,因為系統比較簡單,所以沒有什么特別之處了),應用中所有的Action類都繼承與它。
接下來描述一個幾個有關業務的核心類:BaseService、BaseFacade、AppRelationCore
BaseService:系統中所有業務組件的抽象類,所有業務組件都繼承于此抽象類。此抽象類主要完成一些通用的屬性和方法,AppRelationCore和ICommonDAO
BaseFacade:系統各模塊為其它模板提供外觀模式的抽象類,所以Facade類都繼承于此抽象類,在此抽象類中主要完成一些 通用的配置和方法,AppRelationCore和ICommonDAO
AppRelationCore:存放各個模塊facade的接口,模塊直接互相的調用都需要通過它來實現
這里需要作幾點說明:BaseService比較容易理解,而且在系統中用到的極為普遍,可以參考源代碼,會有深刻的體會。
關于BaseFacade和AppRelationCore類,先前文檔中有過說明,該系統是以模塊來劃分功能區域的,為了保持各個模塊相對的獨立性,模塊與模塊之間的調用都要通過Facade類來完成(所有模塊下的Facade類都繼承于BaseFacade),而最終所有的Facade類都會在AppRelationCore類中體現,系統調用都會通過AppRelationCore來完成,以保持簡單、完整、一致性。由于訂單系統中,模塊少,所以沒有用上Facade類,不過這種方式還是可以推薦的,這里特此說明。
已經轉移到
好·色之徒--我的博客、我的生活