亚洲成人一区在线观看_天堂网www_国产精品久久9_中文在线播放_伊人天天_久久精品久久久精品美女

當(dāng)前位置:首頁 > 網(wǎng)站舊欄目 > 學(xué)習(xí)園地 > 設(shè)計軟件教程 > EMF開發(fā)指南之Reference詳解

EMF開發(fā)指南之Reference詳解
2010-01-14 22:44:28  作者:  來源:
★reference沒有默認(rèn)值,因為它們的默認(rèn)值都是null
★one-way reference 跟simple attribute比較像,因為涉及到延遲加載,所以getter方法會相對復(fù)雜點
★bedirectional reference 雙向引用表示reference在對方的opposite里面保存著(如果用annotated interface來定義emf的話,則需要設(shè)置兩邊的opposite屬性),對于雙向應(yīng)用的getter方法跟單向一樣,區(qū)別主要在setter部分,因為在改變關(guān)聯(lián)關(guān)系的時候需要同時修改雙方的引用,這里會使用到EObject的eInverseAdd()和eInverseRemove()方法,即取消舊的關(guān)聯(lián)關(guān)系,建立新的關(guān)聯(lián)關(guān)系,且兩邊同時修改,因此我們應(yīng)該明白一點,那就是建立了雙向關(guān)聯(lián)之后,關(guān)聯(lián)雙方只允許被一個reference引用。由于做了很多修改,會觸發(fā)一系列的Notification,這里使用了一個NotificationChain來收集所有的Notification在最后一一跟通知接收者attach起來
★multiplicity-many reference 一對多引用就是其中有一個引用是一個集合,因此對于多的那一方不存在setter方法
★containment reference在uml圖中表述為容器方以by-value的方式聚合0或n個目標(biāo)對象(被包含對象),在emf中則表現(xiàn)為容器方的containment設(shè)置為true,互為containment reference的對象在持久化的時候,將被保存在一個document中。因此在getter方法中也不需要proxy這樣的運行機(jī)制。對于容器對象來說,被包含對象只能有一份,如果向容器中添加重復(fù)對象,最終得到的只有一份。如果將一個目標(biāo)對象添加到一個容器對象,則必須將其從原有容器中刪除。containment reference也可以看成是一種雙向引用,因為在EObjectImpl中有一個eContainer屬性,用來保存容器對象。我們也可以將containment reference轉(zhuǎn)換成更直接的雙向引用,只需要跟雙向引用在被引用方添加相應(yīng)的getter方法,不同之處在于在指定container為true即可。
★non-proxy-resolving reference,默認(rèn)情況下,reference都會檢查互為reference的雙方對象是否在一個document之中,然后采用不同的方式,不在同一個document中將采用proxy的方式加載reference對象,如果能確信reference雙方對象都在一個document中,那么getter方法就跟single value的attribute沒有區(qū)別,這里我們只需要將resolveProxies設(shè)置為false即可。
★volatile reference跟volatile attribute一樣,需要自己手工修改具體實現(xiàn)
★non-changeable reference跟non-changeable reference一樣,通常與volatile reference聯(lián)合使用。
★unsettable reference也沒什么好說的
★map reference 在emf中為了支持map,必須先定義map entry,一個 map entry是一個實現(xiàn)了Map.Entry接口并且具有key和value兩個feature的EClass類,map entry可以顯式或者隱式定義。顯式定義,就是在EPackage類中添加一個訪問map entry的方法,隱式定義則是在containment reference中使用map entry。如果使用annotated interface定義emf model的話,那么需要這樣定義,在package中定義一個返回值為EClass的getXxxx()方法,并添加以下注釋:@model但沒有instanceClass屬性,定義MapEntry的相關(guān)屬性,比如features屬性名列表以及關(guān)于feature的屬性。隱式定義,這個一般在reference中定義,即返回值必須是Map或者EMap的getter方法,注釋必須有@model,且?guī)в衜apType或者keyType,valueType屬性,如果使用了mapType屬性,則必須在Package中顯示定義MapEntry的getter方法,使用keyType,valueType定義時,EReference將隱式定義一個包含keyType和valueType屬性的MapEntry,且默認(rèn)的名稱為“keyTypeToValueTypeMapEntry”

安徽新華電腦學(xué)校專業(yè)職業(yè)規(guī)劃師為你提供更多幫助【在線咨詢
主站蜘蛛池模板: 在线一区视频 | 久久久久久一区 | 在线观看日韩 | 欧美成人一区二区 | 亚洲xx在线| 午夜激情视频免费 | 成人黄色短视频在线观看 | 欧美日韩精品一区 | 日韩在线视频一区 | 精品在线一区二区三区 | 欧美另类一区二区 | 久久久久中文字幕 | 亚洲蜜臀av乱码久久精品蜜桃 | 国产精品一区欧美 | 精品国产乱码久久久久久88av | 国产一区二区三区在线免费 | 日本黄色一级 | av中文字幕网 | 久久99这里只有精品 | 国产自在现线2019 | 亚洲一区视频在线 | 奇米av| 成人免费xxxxx在线观看 | 日韩在线视频观看 | 天天夜夜操操 | 在线看片成人 | 狠狠爱网站 | 91香蕉视频在线观看 | 亚洲精品国品乱码久久久久 | 黄色毛片在线播放 | 日本私人网站在线观看 | 在线播放国产一区二区三区 | 青青草综合在线 | 91精品一区二区 | 国产日韩欧美一区二区 | 久久久久亚洲精品国产 | 国产欧美综合一区二区三区 | 一区二区三区在线 | 欧 | 五月激情综合网 | 中文精品一区二区三区 | 国产精品人人做人人爽人人添 |