使用 AIDE 实现高效率,第 2 部分: 构建实际接触点
2010-04-06 00:00:00 来源:WEB开发网清单 1 中的代码来自 WeatherStation 项目。调用此方法时,新的 temperature 值将作为参数传递,而旧的 temperature 将被保存,代码还将进行检查,确定是否有任何观测器在侦听此对象。
清单 1. 发出通知的方法
public void setTemperature(double newTemperature)
{
double oldTemperature = temperature;
temperature = newTemperature;
if (eNotificationRequired())
eNotify(new ENotificationImpl(this,
Notification.SET,
ComPackage.WEATHER_STATION__TEMPERATURE,
oldTemperature, temperature));
}
Eclipse Modeling Framework (EMF) 为 EObject 类提供了通知机制。每个 EObject 类(或子类)都可以维护观测器(也称为适配器)列表,只要出现相关状态更改,就会立即通知这些观测器。框架的 eNotify() 方法将遍历此列表,并向观测器转发通知。正如您在清单 1 中所看到的,参数 ComPackage.WEATHER_STATION__TEMPERATURE 是通知的主题。
联机帮助详细说明了如何操作 WeatherStation 项目,您还可以在 GUI 中查看通知效果。具体来说,此接触点会将响应中的操作状态修改为所通知的温度更改。
对于 EMF 对象未与观测器一起使用的情况,对 eNotificationRequired() 的调用(请参见清单 1)将只返回一个无害的有效空指针检查,此检查是在使用 Just-in-Time (JIT) 编译器时进行内联的。如果您稍后决定向给定参数添加观测器,这个功能将非常有用。
本教程稍后将介绍其他框架(特别是 JMX)生成通知的方式。
将接触点连接到外部 Java 代码
更多精彩
赞助商链接