重新認識“物件”和“行為”之間的關係
DDD中強調“領域物件是擁有行為的”。這句話我覺得說法是正確的,但是其做法難道就是“在領域物件裡寫方法”這麼簡單嗎?
我們常說“類應該具有生命的”,但我不認為“把方法寫到類裡就會讓類具有生命了”,因為"把簡單地把方法寫到類裡,其最終也只是讓類變成了一潭死水,是經不起風浪的,是無法變成湖泊和海洋的”。類不會無緣無故產生行為,類能夠產生行為一定是在一定的場景下發生的。在我看來,“簡單地把方法寫進類裡是無法描述多(複雜)場景下的類的行為的”。如果有人說在他的專案裡那樣做沒問題,那我只能說他的專案(場景)還不夠複雜。
其實“貧血物件”和“充血物件”都是極端的做法,而問題的關鍵是“類如何合理而自然地擁有行為”。在我看來,我們只能在“貧血物件”和“充血物件”之間達成一種平衡。如何把“場景”更好地融入DDD還有沒公論,但我想“類合理而自然地擁有行為”應該是一條準則。
我們常說“類應該具有生命的”,但我不認為“把方法寫到類裡就會讓類具有生命了”,因為"把簡單地把方法寫到類裡,其最終也只是讓類變成了一潭死水,是經不起風浪的,是無法變成湖泊和海洋的”。類不會無緣無故產生行為,類能夠產生行為一定是在一定的場景下發生的。在我看來,“簡單地把方法寫進類裡是無法描述多(複雜)場景下的類的行為的”。如果有人說在他的專案裡那樣做沒問題,那我只能說他的專案(場景)還不夠複雜。
其實“貧血物件”和“充血物件”都是極端的做法,而問題的關鍵是“類如何合理而自然地擁有行為”。在我看來,我們只能在“貧血物件”和“充血物件”之間達成一種平衡。如何把“場景”更好地融入DDD還有沒公論,但我想“類合理而自然地擁有行為”應該是一條準則。
[該貼被flyzb於2012-07-15 17:09修改過]
相關文章
- 不同層之間的物件關係物件
- FAILGROUP和REDUNDANCY之間的關係關係!AI
- tablespace和datafile之間的關係
- 重新認識javascript物件(一)——物件及其屬性JavaScript物件
- Window, WindowManager和WindowManagerService之間的關係
- 行為和狀態的關係
- 類之間的關係
- 黑客和開源革命之間的關係黑客
- 認識類和物件物件
- 請教:java的子執行緒和主控執行緒之間的關係?Java執行緒
- 網站和伺服器之間的關係網站伺服器
- 如何理解Nginx、uWSGI和Flask之間的關係?NginxFlask
- SDK、JDK、JRE 和JVM 之間的關係JDKJVM
- 光流與視訊行為識別的關係
- 前端建構函式、原型、例項物件之間的關係前端函式原型物件
- 【java】類之間的關係Java
- 物件怎麼轉化為關係的物件
- 【譯】使用 Room 定義物件間的關係OOM物件
- 如何寫工程程式碼——重新認識物件導向物件
- 重新認識原型和原型鏈三原型
- 重新認識原型和原型鏈一原型
- 重新認識原型和原型鏈二原型
- 重新認識受控和非受控元件元件
- 一張圖說明 函式, 例項(物件), 原型之間的關係函式物件原型
- 請教關於物件與關係間的對映物件
- Web3和元宇宙之間的關係Web元宇宙
- 備份集和備份片之間的關係
- Android 中Activity,Window和View之間的關係AndroidView
- 工具和敏捷軟體開發之間的關係敏捷
- ASM file和file alias之間的對映關係!ASM
- 前端之DOM解析和渲染與CSS、JS之間的關係前端CSSJS
- Window、WindowManager、View 之間的關係View
- ODS與DW之間的關係
- UML中類之間的關係
- 《神經病學》:重新整理認知!最新研究發現炎症和阿爾茨海默病之間或無因果關係
- 關於UI設計行業的認識再到認識UI行業
- Kubernetes和Docker之間的關係是什麼?Docker
- 卷積層和全連線層之間的關係卷積