重新認識“物件”和“行為”之間的關係

flyzb發表於2012-07-15
  DDD中強調“領域物件是擁有行為的”。這句話我覺得說法是正確的,但是其做法難道就是“在領域物件裡寫方法”這麼簡單嗎?
  我們常說“類應該具有生命的”,但我不認為“把方法寫到類裡就會讓類具有生命了”,因為"把簡單地把方法寫到類裡,其最終也只是讓類變成了一潭死水,是經不起風浪的,是無法變成湖泊和海洋的”。類不會無緣無故產生行為,類能夠產生行為一定是在一定的場景下發生的。在我看來,“簡單地把方法寫進類裡是無法描述多(複雜)場景下的類的行為的”。如果有人說在他的專案裡那樣做沒問題,那我只能說他的專案(場景)還不夠複雜。
  其實“貧血物件”和“充血物件”都是極端的做法,而問題的關鍵是“類如何合理而自然地擁有行為”。在我看來,我們只能在“貧血物件”和“充血物件”之間達成一種平衡。如何把“場景”更好地融入DDD還有沒公論,但我想“類合理而自然地擁有行為”應該是一條準則。

[該貼被flyzb於2012-07-15 17:09修改過]

相關文章