17 使用註解來定義行爲

17.1 framework 中的 API定義

        若是你在程序中用了 framework,你須要與 framework 有一個約定 ,例如,一個java對象負責處理一個 toolbar 按鈕的點擊事件,framework 須要知道要調用這個對象的那個方法。java

        爲了達到這個目的,每一個 framework都定義了一個API , 這個API 中定義了你的代碼該如何和框架交互,        也定義了由 框架 來 建立或 管理的 application objects.app

  17.2 經過繼承來定義API 

        傳統的方式是經過繼承來定義API,這種方式要求你的類要繼承一個類或者實現一個接口,Eclipse 3.x platform 就是用的這種方式框架

        例如框架會定義 一個抽象類,定義了那些方法必須實現。用上面的 toolbar 按鈕的例子來講,或許有一個叫作 execute()的方法, 框架必須知道當按鈕點擊的時候調用它。eclipse

      經過繼承來定義API ,耦合性比較高,例如,測試類沒有框架環境,沒辦法運行。對於框架的更新和擴展也是很差的 。函數

    因此 Eclipse 4.x不在使用這種方法了測試

17.3  經過註解開定義API

        Eclipse 4.x 的API是經過註解來實現的, 用來標識哪些方法 在某個時間點被調用,這些註解被叫作behaveor annotations(行爲註解)ui

Eclipse 生命週期註解 for partsspa

註解 描述
@PostConstruct 這個註解在 類構造函數初始化後,而且 字段和 方法 注入完成以後調用
@PreDestroy 這個註解在類被銷燬以前調用,能夠用來清理 resources
@Focus 這個註解在 part 得到焦點時候調用
@Persist 這個註解 在 由Eclipse framework 觸發的 part 的保存請求時候調用
@PersistState 這個註解 在 model object 被 dispose以前調用,因此該註解能夠用來保存part 實例 狀態。它的調用時機在@PreDestory 以前。 (@PersistState先調用,@PreDestory 後調用)

@PostConstruct ,@PreDestroy 在 javax.annotation包中,@Persist,@PersistState ,@Focus 在 org.eclipse.e4.ui.di 包中.net

以上註解與@Inject一塊兒工做時候,會致使 方法被調用兩次,第一次是依賴注入,第二次 是行爲註解,orm

這是錯誤的,不該該這麼使用。(這特麼不是框架的bug?)

17.4 使用@PostConstruct 創建 用戶界面

            推薦使用@PostConstruct 註解 來創建 用戶界面, 固然也能夠在構造函數中創建用戶界面,不過不建議這麼作,由於此時 field 和 method 尚未被注入

相關文章
相關標籤/搜索