場景Context是新的物件型別
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修改過]
相關文章
- Context的典型使用場景Context
- DCI 的 註冊場景ContextContext
- 【JavaScript】Function型別是物件JavaScriptFunction型別物件
- Java中的引用型別和使用場景Java型別
- DCI中Context物件的新設計Context物件
- String資料型別的應用場景資料型別
- sorted set 資料型別的應用場景資料型別
- php中物件是引用型別嗎?PHP物件型別
- TypeScript 中列舉型別的理解?應用場景?TypeScript型別
- redis資料型別及應用場景Redis資料型別
- Redis 資料型別及應用場景Redis資料型別
- Redis系列-資料型別及使用場景Redis資料型別
- redis的五種資料型別及應用場景Redis資料型別
- Redis五種資料型別應用場景Redis資料型別
- Redis中7種集合型別應用場景Redis型別
- Redis多種資料型別以及使用場景Redis資料型別
- go需要泛型的場景Go泛型
- Go 需要泛型的場景Go泛型
- 泛型使用場景泛型
- 關於各種List型別特點以及使用的場景型別
- Redis 資料型別及其使用場景 String 篇Redis資料型別
- redis 五種資料型別和使用場景梳理!Redis資料型別
- JavaScript的型別和物件JavaScript型別物件
- 遊戲研發的設計規範(三):場景型別化製作遊戲型別
- Android中Application和Activity的Context物件的區別AndroidAPPContext物件
- Hibernate查詢後返回的集合物件中每個物件是什麼型別的?物件型別
- ORACLE物件型別表Oracle物件型別
- 關於Redis資料型別以及應用場景的分析與總結Redis資料型別
- 各種機器學習演算法的應用場景分別是什麼?機器學習演算法
- 【人工智慧】各種機器學習的應用場景分別是什麼?人工智慧機器學習
- Python是一種物件導向的動態型別語言Python物件型別
- 原畫人場景原畫教程,畫場景的思路是怎麼樣的?
- 影片直播場景下物件儲存的應用物件
- C# 物件比較(值型別、引用型別)C#物件型別
- JS中資料型別、內建物件、包裝型別物件、typeof關係JS資料型別物件
- 物件儲存適用於哪些場景?這5個場景皆可使用!物件
- 個別場景沒必要排序排序
- delegate、notification、KVO場景差別