国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

openfans領域模型驅動的嘗試

2019-11-18 12:31:36
字體:
來源:轉載
供稿:網友

領域模型驅動( Domain Driven Design ),很熱的名詞。 Openfans ,不太熱的網站。 Openfans 就不多介紹了,網站用 sPRing+hibernate 為核心的一堆開源軟件構建。有了 spring 的 IOC 和 hibernate 的 ORM ,打著 ddd 的旗號也就名正言順了很多。

言歸正傳,就講 openfans 現在經 ddd 思想改造過的模型。整體上看還是普通的三層架構體系:展現層、業務層、持久層。展現層用 spring mvc ,力圖做到只是展示相關,避免出現業務邏輯。再具體細分,就是 jsp 頁面只有展示邏輯,主要使用 jstl 完成顯示功能。 Controller 負責從頁面獲得參數、把數據傳回頁面、控制頁面流傳和調用業務層的接口。持久層使用 hibernate ,在設計上我不是按 dao 方式為每個對象建立相應的 dao ,也不是 ddd 推薦的每個 domain 一個 repository ,而是分成了 Persistence 和 Fetcher2 個接口。 Persistence 處理持久相關如 save 和 remove 方法, Fetcher 則處理 get 相關。這樣分的原因也很簡單, persistence 是很穩固的,對象都可以共用一個接口如 save ( Object ),而 fetcher 就千變萬化,需要分頁、排序等接口。

這樣設計是與業務層架構相關的。我采用的是 domain 對象(簡稱 DO ) + 一層薄薄 façade 的方式。 DO 處理自身的邏輯,包括持久功能。本身 DO 是沒有持久能力的,需要依靠注入的 persistence 接口,這里就體現按 Persistence 和 Fetcher 分開的一個好處, persistence 所有 DO 可以共用一個,給編程帶來了方便。 Openfans 中采用的是 DO 繼續一個抽象 PersistentObject 類的方式,這樣 DO 方便的獲得了注入的能力和持久的能力。這樣做有何優缺點還需要做些討論,為了方便我也就先這么用。 PersistentObject 代碼如下:

public abstract class PersistentObject implements NeedPersist {

       private Persistence persistence;

 

       public void save() {

              persistence.save(this);

 



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 定州市| 东安县| 内江市| 海南省| 长宁县| 武鸣县| 新营市| 房产| 呼图壁县| 漯河市| 和平区| 安阳市| 宣威市| 炉霍县| 临桂县| 鸡泽县| 西乌珠穆沁旗| 漳州市| 孙吴县| 庆城县| 界首市| 敦化市| 黄骅市| 常宁市| 邯郸市| 抚松县| 从江县| 酉阳| 米林县| 峨山| 乌鲁木齐县| 农安县| 句容市| 澄迈县| 泊头市| 溧阳市| 仙桃市| 新津县| 平塘县| 镇远县| 万载县|