<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擁有對于狀態空間的完全的控制權.
    主站蜘蛛池模板: 亚洲日韩乱码中文无码蜜桃| 国产日韩亚洲大尺度高清| 亚洲欧洲精品久久| 99精品免费视品| 国产AV无码专区亚洲AVJULIA| 一级毛片免费不卡| 亚洲日韩国产精品第一页一区| 久久性生大片免费观看性| 国产成A人亚洲精V品无码性色| 免费国产成人α片| 久久久久久久亚洲Av无码| 国产精品久久久久久久久免费| 国产成人精品日本亚洲专一区| 色视频色露露永久免费观看| 黄网站在线播放视频免费观看| 国产亚洲精品无码专区| 少妇人妻偷人精品免费视频| 亚洲精品永久www忘忧草| 久久不见久久见中文字幕免费 | 亚洲三级在线视频| 在线a人片天堂免费观看高清| 美景之屋4在线未删减免费| 亚洲色无码专区在线观看| 免费A级毛片无码专区| 亚洲av永久无码精品天堂久久 | 四虎影视永久免费观看| 一个人看的www免费高清| 亚洲av日韩av高潮潮喷无码 | 两个人看的www免费| 亚洲经典在线观看| 日韩免费视频播放| 人人揉揉香蕉大免费不卡| 中文字幕亚洲综合小综合在线| 国产jizzjizz免费看jizz| a毛片久久免费观看| 亚洲精品国产精品国自产网站| 亚洲VA综合VA国产产VA中| 59pao成国产成视频永久免费| 亚洲变态另类一区二区三区 | 亚洲天堂男人影院| 国产亚洲精品高清在线|