領域對象的生命週期

領域對象的生命週期

每個對象都有生命週期,如圖所示。對象自創建後,可能會經歷各種不同的狀態,直至最終消亡——要麼存檔,要麼刪除。當然,很多對象是簡單的臨時對象,僅通過調用構造函數來創建,用來做一些計算,而後由垃圾收集器回收。這類對象沒必要搞得那麼複雜。但有些對象具有更長的生命週期,其中一部分時間不是在活動內存中度過的。它們與其他對象具有複雜的相互依賴性。它們會經歷一些狀態變化,在變化時要遵守一些固定規則。管理這些對象時面臨諸多挑戰,稍有不慎就會偏離MODEL-DRIVEN DESIGN的軌道。

主要的挑戰有以下兩類。

  1. 在整個生命週期中維護完整性。
  2. 防止模型陷入管理生命週期複雜性造成的困境當中。

將通過3種模式解決這些問題。首先是AGGREGATE(聚合),它通過定義清晰的所屬關係和邊界,並避免混亂、錯綜複雜的對象關係網來實現模型的內聚。聚合模式對於維護生命週期各個階段的完整性具有至關重要的作用。接下來,我們將注意力轉移到生命週期的開始階段,使用FACTORY(工廠)來創建和重建複雜對象和AGGREGATE(聚合),從而封裝它們的內部結構。最後,在生命週期的中間和末尾使用REPOSITORY(存儲庫)來提供查找和檢索持久化對象並封裝龐大基礎設施的手段。

儘管REPOSITORY和FACTORY本身並不是來源於領域,但它們在領域設計中扮演着重要的角色。這些結構提供了易於掌握的模型對象處理方式,使MODEL-DRIVEN DESIGN更完備。

使用AGGREGATE進行建模,並且在設計中結合使用FACTORY和REPOSITORY,這樣我們就能夠在模型對象的整個生命週期中,以有意義的單元、系統地操縱它們。AGGREGATE可以劃分出一個範圍,這個範圍內的模型元素在生命週期各個階段都應該維護其固定規則。FACTORY和REPOSITORY在AGGREGATE基礎上進行操作,將特定生命週期轉換的複雜性封裝起來。

模式:AGGREGATE

模式:AGGREGATE

模式:FACTORY

模式:FACTORY

模式:REPOSITORY

模式:REPOSITORY

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章