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

          [導入]meta-enhanced Map

          Posted on 2005-11-22 17:53 canonical 閱讀(312) 評論(0)  編輯  收藏 所屬分類: Witrix開發平臺
            hibernate等O/R Mapping軟件包中使用javabean來作為數據的載體, 但這些bean一般除了get/set等數據訪問方法之外沒有什么其它的業務方法。 前一段時間有人認為這是所謂貧血的領域模型(Anemia Domain Model),引發了一場討論。 其實這些bean的作用僅是表達了領域內的數據關系, 本身并不可能作為完整的領域模型層存在。 在數據層,我們所需要的是數據對外暴露,因為我們無法預知這些數據的使用方式, 就象是實驗數據發表出來以后你無法預知別人如何分析一樣,這時信息流是開放的,向外的:信息在這里,放馬過來吧。 而在業務邏輯層,復雜的邏輯控制交織在一起,我們需要精細的控制信息通道,通過函數封裝,我們反轉了信息流的方向:取到什么數據是由調用者提供的信息決定 的。
               實際上,在ORM軟件中使用的bean基本上與一個Map類似,只是它具有java Class所提供的元數據,而訪問數據時又必須通過get/set方法,因而在這些方法中能夠根據元數據動態的作出響應。在witrix平臺的統一數據訪 問框架中主要基于Map等通用數據類型,而不是個性化的bean。為了使得Map具有與bean一樣的動態響應能力,只需要加入meta的支持即可。
          interface IExMap extends Map{
               IMapChecker getChecker();
            Map getModifications();
            ...
          }
          在get/set之前可以通過IMapChecker來實現動態處理,對Map中數據所作的修改也可以記錄下來
          主站蜘蛛池模板: 金湖县| 武平县| 铜梁县| 大港区| 新密市| 仪陇县| 平乐县| 京山县| 林周县| 大石桥市| 图们市| 宜兰市| 崇仁县| 江油市| 哈尔滨市| 通江县| 积石山| 西宁市| 屏东县| 苏尼特左旗| 沈阳市| 双城市| 民丰县| 肇源县| 崇仁县| 兴安盟| 浦城县| 德州市| 丰城市| 德安县| 浦县| 观塘区| 阳朔县| 东乡县| 晴隆县| 漠河县| 蚌埠市| 阳西县| 巴彦县| 昌图县| 双城市|