2013年7月9日 星期二

OO的"沉重",DDD的反思

DDD是乎達成了相當了不起的成就,給出了一套方法論,讓programmer可以沿著物件導向開發的方式前進,一切的問題似乎是迎刃而解!?

但是本身的經歷說明了似乎還有長遠的路要走,下面記錄下我幾個不解之處

database/persistence是否屬於domain model??

這個大哉問其實再Martin Folwer的PoEAA有所解答,本書主要討論DB模組與OO模型之間轉換的問題,根據作者的講法,是的DB物件屬於domain model的一部分,同時hibernate可能也是實作了大多數PoEAA裡面的內容
不過在DDD內,並沒有詳細探討到DB模型如何融入到domain model內,倒是Jimmy Nilsson的著作談到,如果我們想把Persistence機制與OO模型完全切開,將會導致七八種很嚴重的"後遺症",然則讓OO model與Persistence機制完全分開又有其好處,不過看來現實是極難辦到

DDD的實際範例?

單單DDD一本書,實際上有太多縫隙需要填補,Jimmy Nisson的著作是個不錯的選項,然則還是有許多方面需要考慮的

DDD是否為唯一方式?是否與其他模範(paradigm)設計方式結合?

前者顯然否定,明顯來說一些嵌入式系統底層就無法享受這樣的好處,不過物件導向的原則倒是往往深入開發的過程。
其他典範如SOA、generic programming、Aspect...等等,都是一些很好的考量,我們看到compiler愈來愈強大,如何混合這些方法論或者技術層次的工具,都是一些開發時可以考量的。如Modern C++ design一書結合pattern以及generic programming的技巧就叫人拍案叫絕,但是個人認為這種技術的門檻太高,短時間內不會被廣泛採用。Aspect則是似乎可以解決Persistence以及OO model分割的問題

沒有留言:

張貼留言