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 尚未被注入

相关文章
相关标签/搜索