gmf學習筆記

剛剛接觸eclipse的這些概念,着實有點頭暈

現在總算對這一部分有了一點具體的認識了,寫出來,順便理一下思路:


emf 用於創建模型
gef是eclipse中表示可編輯圖形界面的非常強大的一種工具,把具體的工作劃分爲MVC三層模式.

所以在通常的開發中,一般是將兩種技術合起來用 , 簡稱GMF .

emf的建模
       emf建模可以採用多種方式,也有不少現成的工具,比如:eclipse uml ,下載個人版的就基本夠用了,但是不能於小組開發(對cvs有限制),當然要是誠心一點也可以找到破解版.....(呵呵,個人言論,沒用過,也不推薦),建模部分唯一要注意的是對其它類的引用(比如說emf.draw2d.Rectangle),其實是可以直接引用的.

       三下兩下建模完畢了,如果是用  .xsd 格式寫的( 辛苦了......) 那麼在eclipse裝完emf的插件後,新建emf項目,導入xsd文件,就可以生成模型的代碼了,要是熟悉了以後,建模還是很方便的.當然eclipse裏也提供rose, ecore, 以及 uml  類圖的直接導入.
   
       模型部分通常一定會建立control的監聽,我的做法是在寫類圖的時候讓AbstractModel繼承一個Adaptor,這樣生成後的模型就會自動加入監聽了.

       emf提供了非常良好的數據的串行化和反串行化,EMF能夠處理多重模型源,例如XML模型,所以指定使用哪些資源來實現(反)串行化你的數據也是很重要的。通常,當你調用 ResourceSet.createResource(URI)方法時,它查詢Resource.Factory.Registry來查找一個工廠-該 工廠是爲該URI而註冊的並且使用它來創建一個適當的資源實現。因此,在你(反)串行化你的數據以前,請確保你已註冊了適當的資源工廠實現。EMF提供若 幹Resource.Factory實現:

  ·對於XML數據,使用org.eclipse.emf.ecore.xmi.impl.XMLResourceFactoryImpl。

  ·對於XMI數據,使用org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl。

  ·對於Ecore模型,使用org.eclipse.emf.ecore.xmi.impl.EcoreResourceFactoryImpl。

    對於剛入門的人來說(比如說我啦),對調用那些什麼工廠之類嫌太麻煩的話,只接用xmlEncoder 進行編碼,解碼也是一種不錯的方式,貼一段代碼:
    //   保存  

    XMLEncoder encoder=null;
        try {
            encoder = new XMLEncoder(
                    new BufferedOutputStream(
                            new FileOutputStream("d://Sample.xml")));
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        encoder.writeObject(contentsModel);
        encoder.close();

//解析
    XMLDecoder decoder = null;
      
        try {
            decoder = new XMLDecoder(
                        new BufferedInputStream(
                          new FileInputStream("d://Sample.xml")));
                contentsModel = (ContentsModel)decoder.readObject();
                decoder.close();
        } catch (FileNotFoundException e) {
            contentsModel = new ContentsModel();
        }

       最後保存成標準的xml,  它也有自已的dtd; 沒寫出來,但是解析器都能夠識別的
        其實還是相當方便的,要記住了:
        放入的對象必須是標準的pojo,不然的話.......你自已看看保存的 xml就知道了!

      
       最重要的部分,就應該是把生成的模型,與gef無縫集成了,不過涉及到的東西太多,思路倒是有,具體怎麼做......會在下一章節,詳細介紹的;
     
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章