場景Context是新的物件型別

banq發表於2010-04-06

Contexts are the new objects一文提出DCI架構中Context是一種新的物件,不同於我們現在的物件語法。

當我們從過程化程式設計轉移到物件導向程式設計時,我們把輸入引數id作為物件的指標,如下:

程式導向寫法:注意id作為輸入引數

procedure(id,param1,param2)

物件導向寫法:id被隱含,實際作為物件的標識了。

object<id>.method(param1,param2)

實現DCI一般是在無態服務中,服務提供了DCI實現的場景,那麼語法就如下編寫:

service.method(id1,id2,id3,param1,param2)

按照前面程式導向到物件導向的轉換規律,我們可以將場景實現更簡單更OO:

context<id1,id2,id3>.interaction(param1,param2)

id1 id2 id3隱含在context中,說明一個場景是由三個方面因素決定的,是動態的。

這樣我們再也不必一個個先尋找構成context的物件,確保他們OK正常,確認他們之間關係等等,所有這些都在Context 構造中實現(正如一個物件初始化構造一樣), 這樣,我們就可以關注如何使用Context,而不必關注如何構造(工廠模式思想延伸),我們可以關注場景的行為了.

作者認為場景物件會替代無態服務。

http://www.artima.com/forums/flat.jsp?forum=270&thread=287546&start=0&msRange=15

個人觀點:

我之前提到兩種實現方式:

Domain Events:服務是事件的入口,外部事件進入服務後,被服務傳遞給領域模型,由領域模型驅動相關服務或倉儲或相關演算法完成一定職責行為。

Context物件:專門設立一個場景Context物件,服務-->場景,在場景中注射服務或倉儲或演算法,完成相關場景的職責行為。

看來沒有必要再服務-->場景了,直接使用場景替代服務即可,否則多個環節幹嘛,也可以使用場景替代MVC中Controller,更加簡化。

[該貼被banq於2010-04-06 17:39修改過]

相關文章