<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 176, comments - 240, trackbacks - 0, articles - 7

    Behaviour Dependency Injection

    Posted on 2006-10-22 18:44 canonical 閱讀(1261) 評論(0)  編輯  收藏 所屬分類: 設計理論
    ? IoC(Inversion of Control)是一個很寬泛的概念,對于我們常說的IoC容器(如spring)所做的工作,一個更加準確一些的說法是依賴注入(Dependency Injection), 即容器將一個對象所依賴的其他對象push到該對象中,而不是該對象從外界環境pull相關的依賴對象. 不過, 細究起來這種依賴注入仍然只是DI的一種特殊形式, 可以將它稱之為data dependency injection, 因為IoC容器所許諾的是: "啊哈, 當我們需要對象A的時候,它就在這兒". 雖然IoC容器管理的不僅僅是數據,而是具有行為的對象,但是如果要讓這些行為具體發生, 我們仍然需要額外的調用步驟.
    ? 對于一個自動觸發behaviour的系統, 我們一般將之稱之為引擎(Engine). 例如工作流引擎在處理完本步驟的業務邏輯之后會自動觸發流程流轉操作. 一個引擎對于我們的承諾是: "當我們需要某個behaviour的時候, OK, 它會在適當的時候發生的". 對于一個軟件開發框架或者更宏大的軟件開發平臺而言, 如果我們以業務邏輯為主體來審視整個程序運行過程, 則它們的核心價值也在于在適當的時候將適當的操作Inject到業務邏輯中. 對于目前所謂的軟件開發平臺而言, 除了工作流的內容之外, 一個主要部分就是CRUD(Create/Read/Update/Delete) Ready. 一個開發平臺的優劣往往直接體現在它在多大程度上能夠將CRUD操作剝離出主體程序邏輯, 這不僅僅涉及到數據庫存取操作, 同時還包含界面交互, 數據邏輯關聯等.
    ? 除了引擎,框架,平臺等應用層面的實現之外, AOP(Aspect Oriented Programming)在語言層面為behaviour注入也提供了一種特定的實施手段. 在AOP的概念中, 往往作為切點的函數被認為是基礎的部分, 而interceptor是在基礎藍圖上的一種擴展. 這也體現在基礎函數定義了當時執行環境中可以訪問的狀態變量(參數/屬性),而interceptor則依附于pointcut處所能得到的狀態變量, 它本身一般并不維護獨立的狀態變量(不產生也不消滅狀態變量). 從數學上看, base function和interceptor之間構成一種對偶(dual)關系, 當我們的關注重點轉移到interceptor上來之后, 它本身也應該具有完整的業務語義, 這需要對AOP的執行過程做小小的偏置處理.
    ? 在witrix平臺的BizFlow設計中,BizFlow是通過類似AOP的方法作為CRUD操作的Filter實現的, 但是從bizflow本身的配置文件來看,它可以構成一個完整的業務描述, 而CRUD成為某種自動注入的behaviour.例如對于新增操作, BizFlow中的配置可以如下
    ? <action id="Add-default">
    ? </action>
    雖然沒有寫任何代碼, 新增操作(包括從request中讀取操作并做有效性校驗等操作)是自動進行的. 我們也可以在新增前和新增后分別執行一些操作
    ? <action id="Add-default">
    ??? <source>
    ????? some operation before add
    ????? <biz:Proceed/>
    ????? some operation after add
    ??? </source>
    ? </action>
    與AOP中的常見做法不同, 這里并沒有明確定義新增前和新增后這樣的切點, 而只是定義了Add-default這樣一個action. 在BizAction的source段可以執行任何tpl代碼, 而tpl代碼的執行上下文可以看作一個Map, tpl代碼執行過程中可以獲取變量, 也可以設置任意變量, 因而bizFlow擁有對于狀態空間的完全的控制權.
    主站蜘蛛池模板: 亚洲伊人久久大香线蕉综合图片| 成人免费午夜无码视频| 亚洲国产精品人人做人人爽| 亚洲国产午夜精品理论片在线播放 | 国产免费人成视频尤勿视频| 亚洲成A人片在线观看中文| 无遮挡a级毛片免费看| gogo全球高清大胆亚洲| 一级毛片试看60分钟免费播放| 免费在线观看毛片| 久久久久女教师免费一区| 亚洲中久无码永久在线观看同| 国产精品免费一区二区三区| 亚洲人成网站在线播放vr| 免费网站看av片| 亚洲噜噜噜噜噜影院在线播放| 91成年人免费视频| 亚洲精品久久无码av片俺去也| 日韩亚洲国产综合久久久| 久久WWW免费人成—看片| 久久国产精品亚洲综合| 中文字幕天天躁日日躁狠狠躁免费| 亚洲人成网站日本片| 日韩在线视频免费看| 久久99精品免费一区二区| 亚洲黄色在线观看视频| 午夜dj免费在线观看| 一个人看的hd免费视频| 久久精品亚洲精品国产色婷| 成**人免费一级毛片| 99精品视频在线观看免费| 亚洲精品中文字幕无乱码| 免费看国产曰批40分钟| 精品国产免费一区二区三区香蕉| 亚洲一级片在线播放| 亚洲精品456播放| 四虎在线成人免费网站| 深夜免费在线视频| 亚洲黄色免费网站| 亚洲国产天堂久久久久久| 黄网站色在线视频免费观看|