實體:有一類對象看上去好像擁有標識符,它的標識符在歷經軟件的各種狀態后仍然保持一致。
值對象:如果值對象是可共享的,那么它們應該是不可變的。值對象應該保持盡量的簡單。當其他當事人需要一個值對象時,可以簡單地傳遞值,或者創建一個副本。
服務: 1. 服務執行的操作涉及一個領域概念,這個領域概念通常不屬于一個實體或者值對象。
2. 被執行的操作涉及到領域中的其他的對象。
3.操作是無狀態的。
軟件代碼應該具有高層次的內聚性和低層次的耦合度:最常用到的兩個是通信性內聚和功能性內聚。通信性內聚通常在模塊的部件操作相同的數據時使用。把它們分到一組很有意義,因為它們之間存在很強的關聯性。功能性內聚在模塊中的部件協同工作以完成定義好 的任務時使用。
聚合是一個用來定義對象所有權和邊界的領域模式。工廠和資源庫是另外的兩個設計模式,用來幫助我們處
理對象的創建和存儲問題。聚合:是針對數據變化可以考慮成一個單元的一組相關的對象。
工廠:幫助封裝復雜的對 象創建過程,它就是工廠 (Factory)
資源庫:資源庫會保存對某些對象的引用。當一個對象被創建出來時,它可以被保存到資源庫中,然后以后使用時可從資源庫中檢索到。如果客戶程序從資源庫中請求一個對象,而資源庫中并沒有它,就會從存儲介質中獲取它。換種說法是,資源庫作為一個全局的可訪問對 象的存儲點而存在。
重構:重構是不改變應用行為而重新設計代碼以讓它更好的過程。
簡化的建模:關于建模的第一件事是閱讀業務規范,從中尋找名詞和動詞。名詞被轉換成類,而動詞則成為方法。
最好的實現過程的方式是使用服務。其他的處理過程的不同的方式如,將算法封裝進一個策略對象。
約束方法化:將約束置于一個單獨的方法讓它顯示化有很多優點。它很容易閱
讀,如果約束變得更復雜,這可以為向該方法增加更多邏輯提供增長空間。
感謝infoq!