重新認識“物件”和“行為”之間的關係
DDD中強調“領域物件是擁有行為的”。這句話我覺得說法是正確的,但是其做法難道就是“在領域物件裡寫方法”這麼簡單嗎?
我們常說“類應該具有生命的”,但我不認為“把方法寫到類裡就會讓類具有生命了”,因為"把簡單地把方法寫到類裡,其最終也只是讓類變成了一潭死水,是經不起風浪的,是無法變成湖泊和海洋的”。類不會無緣無故產生行為,類能夠產生行為一定是在一定的場景下發生的。在我看來,“簡單地把方法寫進類裡是無法描述多(複雜)場景下的類的行為的”。如果有人說在他的專案裡那樣做沒問題,那我只能說他的專案(場景)還不夠複雜。
其實“貧血物件”和“充血物件”都是極端的做法,而問題的關鍵是“類如何合理而自然地擁有行為”。在我看來,我們只能在“貧血物件”和“充血物件”之間達成一種平衡。如何把“場景”更好地融入DDD還有沒公論,但我想“類合理而自然地擁有行為”應該是一條準則。
我們常說“類應該具有生命的”,但我不認為“把方法寫到類裡就會讓類具有生命了”,因為"把簡單地把方法寫到類裡,其最終也只是讓類變成了一潭死水,是經不起風浪的,是無法變成湖泊和海洋的”。類不會無緣無故產生行為,類能夠產生行為一定是在一定的場景下發生的。在我看來,“簡單地把方法寫進類裡是無法描述多(複雜)場景下的類的行為的”。如果有人說在他的專案裡那樣做沒問題,那我只能說他的專案(場景)還不夠複雜。
其實“貧血物件”和“充血物件”都是極端的做法,而問題的關鍵是“類如何合理而自然地擁有行為”。在我看來,我們只能在“貧血物件”和“充血物件”之間達成一種平衡。如何把“場景”更好地融入DDD還有沒公論,但我想“類合理而自然地擁有行為”應該是一條準則。
[該貼被flyzb於2012-07-15 17:09修改過]
相關文章
- Window, WindowManager和WindowManagerService之間的關係
- 前端建構函式、原型、例項物件之間的關係前端函式原型物件
- Web3和元宇宙之間的關係Web元宇宙
- 網站和伺服器之間的關係網站伺服器
- Kubernetes和Docker之間的關係是什麼?Docker
- 認識類和物件物件
- 【java】類之間的關係Java
- 【譯】使用 Room 定義物件間的關係OOM物件
- 光流與視訊行為識別的關係
- 備份集和備份片之間的關係
- 前端之DOM解析和渲染與CSS、JS之間的關係前端CSSJS
- 重新認識Docker Compose之Sidecar模式DockerIDE模式
- Window、WindowManager、View 之間的關係View
- git、github、gitlab之間的關係GithubGitlab
- TPS和響應時間之間是什麼關係
- 如何寫工程程式碼——重新認識物件導向物件
- 卷積層和全連線層之間的關係卷積
- Python和人工智慧之間存在怎樣的關係?Python人工智慧
- VMX - block by NMI和 NMI unblockinig due to IRET 之間的關係BloC
- 《神經病學》:重新整理認知!最新研究發現炎症和阿爾茨海默病之間或無因果關係
- 重新認識受控和非受控元件元件
- 重新認識原型和原型鏈一原型
- 重新認識原型和原型鏈二原型
- 重新認識原型和原型鏈三原型
- SDK、API 和 app 之間的關係和聯絡是什麼?APIAPP
- pcl::PointCloud和pcl::PontCloud::Ptr之間的關係和轉換方式Cloud
- TLS與SSL之間關係TLS
- 類與類之間的基本關係
- 思考 TPS 與 RT 之間的關係
- React、Ant Design、DvaJS之間的關係ReactJS
- Activity、View、Window之間關係的分析View
- UML類圖--類之間的關係
- 在Linux中,Unix和Linux之間的關係是什麼?Linux
- 關於UI設計行業的認識再到認識UI行業
- 重新認識React Native和Android的通訊原理React NativeAndroid
- 類之間的6種關係詳解
- Java設計模式-類之間的關係Java設計模式
- Linux Shell檔案之間的包含關係Linux
- GeoTools應用-JTS(Geometry之間的關係)