`
whalm2005
  • 浏览: 9240 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

JFace 数据绑定(data binding)实现原理

阅读更多
以下内容来自http://www.vogella.de/articles/EclipseDataBinding/article.html,如需要例子代码,请到这个地址下载。
  
一般数据库驱动的业务应用程序分成以下三个层次:
    *数据库层
    *业务或域模型层
    *表现层
    层与层之间的交互主要表现为数据在层间的流动。

    目前,Hibernate, JPA等ORM技术已成为一个自动化业务层和数据库层之间数据流的流行方式,但业务层与表现层之间的数据交互没有统一的处理方式,大多是手工编写代码来处理。就像Hibernate帮助自动处理业务层和数据库层之间的数据流,Eclipse的JFace的数据绑定方式能帮助自动业务层和表现层之间的数据流。它通过一个简化的MVC模式,创建一个完全通用的、可重复使用的业务层与表现层之间的控制器。
传统的MVC模式,如下图所示:


    这种模式工作方式如下
    1、 表现层(View)观察(或监听)模型层(MOdel)的变化,当它发现模型变化时,表现层相应的进行更新界面;
    2、 控制器(Controller)观察(或监听)表现层的变化事件(如用户在界面上进行操作);
    3、 当控制器(Controller)接收到一个变化事件时,它改变模型,而模型改变,根据第一条,表现层也跟着变化。

    这个方式存在如下两个问题
    1、 表现层需要了解模型层
    2、 控制器需要了解表现层与模型层

     如果我们采用数据绑定的方式,比如文本框绑定到对象的一个属性,我们知道业务模型层中的数据类型是不匹配的,只要建立一个模型(POJOs)与表现层(GUI控件)匹配的工具,就象Hibernate用于匹配POJOs与数据库。
    数据绑定的设计示意如下: 

    这种实现比较简单,用控制器(Controller)作数据绑定工具,它监听模型(Model)与表现层(GUI视图)的变化,当模型的一个属性改变时,属性值自动的拷贝到GUI视图,类似的,当用户改变GUI控件的值时,变化后的值自动拷到模型中。

    现举一个文本控件与对象属性绑定的例子,代码如下:
DataBindingContext bindingContext = new DataBindingContext();
	IObservableValue widgetValue = WidgetProperties.text(SWT.Modify)
				.observe(firstName);
	IObservableValue modelValue = BeanProperties.value(Person.class,
				"firstName").observe(person);
	bindingContext.bindValue(widgetValue, modelValue);

    说明:第3行,firstName这一文本控件,它和Persion类的一个对象person的firstName属性绑定,2-5行就是构造了两个可监听的对象,DataBindingContext 是Eclipse提供的数据绑定工具,bindingContext.bindValue(widgetValue, modelValue);这句在这两个两个可监听对象之间建立了联系。
    数据绑定实现如下图所示
    从上图可以看出,数据绑定的处理是通ValueBinding的实例来处理的,它有一个doUpdate方法来自动来同步对象与控件显示。
    现在来看一下Eclipse 中org.eclipse.core.databinding的类图,如下:

     可以看出,上面的例子用到的是ValueBinding,还用两个SetBinding与ListBinding是用来处理集合类的。
     JFace的数据绑定方式,还涉及到一个重要的对象,可监听对象,位于包org.eclipse.core.databinding.observable.value中,类图如下:


  • 大小: 9.4 KB
  • 大小: 13.8 KB
  • 大小: 13.3 KB
  • 大小: 18.7 KB
  • 大小: 16 KB
0
0
分享到:
评论

相关推荐

    SWT中bean与控件的数据绑定

    3. **SWT的数据绑定框架**:介绍SWT中用于实现数据绑定的库或API,比如JFace Data Binding (JFace Databinding) 或 Eclipse Databinding (.databinding)。 4. **创建数据绑定**:说明如何定义和建立bean的属性与...

    JFace 类包(3.14)

    3. **Data Binding**:JFace 数据绑定是将模型数据与UI元素直接关联的一种机制,它减少了手动更新界面的代码。通过IDataBindingService,开发者可以轻松地实现模型和控件之间的双向数据同步。 4. **Command ...

    SWT/JFace从入门到精通

    - 构建一个简单的表单应用:使用SWT组件创建输入字段,结合JFace的数据绑定实现数据验证和存储。 - 创建自定义视图:学习如何在Eclipse中创建一个新的View,并使用SWT/JFace控件展示数据。 - 实现对话框:创建一...

    11-JFace.rar_java jface

    3. **数据绑定(Data Binding)**:JFace的数据绑定允许开发者将UI组件与模型对象的数据进行关联,当模型数据改变时,UI会自动更新,反之亦然。这极大地减少了手动同步数据的代码量。 4. **选择服务(Selection ...

    Eclipse SWT/JFace 书中 全部实例

    2. JFace Data Binding:学习如何使用JFace的数据绑定机制,自动同步模型与视图的数据。 3. MVC模式:理解JFace如何运用MVC模式来分离业务逻辑和用户界面。 4. Dialogs:创建各种对话框,如MessageDialog、...

    SWT/Jface API 3.4

    5. **Data Binding**:JFace 的数据绑定框架允许开发者将 UI 控件与模型对象的数据自动同步,减少了手动管理这些同步的复杂性。这对于保持界面状态与业务数据一致性至关重要。 6. **Viewer Framework**:JFace 的 ...

    SWT/JFace 3.5 API (CHM)

    JFace 3.5 API则包括数据绑定(Data Binding)、视图(Views)、对话框(Dialogs)和表单(Forms)等模块。开发者可以从中了解到如何创建控件、处理用户输入、组织窗口布局、显示和操作数据,以及创建复杂的对话框和...

    EclipseSWT\JFace实战精解

    例如,JFace的Data Binding机制使得数据模型与用户界面元素之间的同步变得更加简单。 在实战教程中,读者将学习如何使用SWT和JFace创建各种用户界面元素,如按钮、文本框、列表和树结构,并了解如何处理用户事件。...

    eclipse swt/jface核心应用源码

    2. 数据绑定(Data Binding):JFace的特性之一,它允许开发者将UI元素与数据模型自动关联,当模型改变时,UI会自动更新,反之亦然。 3. 视图(Views)和编辑器(Editors):这两者是Eclipse RCP(Rich Client ...

    SWT/JFACE 资料

    5. 数据绑定:JFace的数据绑定机制,如何将模型数据与视图组件关联,实现数据的自动更新。 6. 视图和编辑器:如何创建和使用JFace的视图和编辑器,以及如何在Eclipse插件开发中应用它们。 7. 对话框和消息提示:如何...

    jface 入门例子

    1. **Data Binding**:JFace的数据绑定允许你将控件与模型对象的数据自动同步,减少了手动更新的代码。例如,可以使用`.DataBindings`将文本框与对象属性绑定: ```java DataBindingContext bindingContext = new...

    配套源码_可视化JAVA SWT JFACE GUI程序设计教程

    4. **数据绑定**:JFace的Data Binding Support(DBS)使得界面元素和模型数据之间的同步变得简单,减少了手动更新UI的工作。 5. **对话框和窗口管理**:如何创建和使用各种对话框,如消息对话框、输入对话框等,...

    SWT-JFace-3.4-API

    例如,JFace 的 Data Binding 支持将数据显示和更新与数据模型自动同步,减轻了代码维护的工作量。 在 "SWT-JFace-3.4-API" 这个资源中,我们很可能找到了关于这两个库的API文档。API 文档通常包含了类、接口、方法...

    SWT JFace in action API

    3. 数据模型和数据绑定:理解如何使用JFace的数据模型来封装和管理数据,以及如何通过数据绑定将模型与界面控件关联,实现数据的自动更新。 4. 对话框和消息框:如何创建标准和自定义对话框,如文件选择对话框、...

    swt JFace的API文档

    5. **Data Binding**:JFace 的数据绑定功能允许将模型数据与界面元素自动同步,减少了手动更新界面的工作。 6. **Dialogs**:预定义的对话框类,如 MessageDialog、FileDialog、InputDialog 等,简化了创建常见...

    SWT & JFace_最新最全_API

    4. **数据绑定**:了解JFace的数据绑定概念,如何将模型数据与界面元素关联起来,实现数据的自动更新。 5. **示例代码**:API文档中可能包含示例代码,可以帮助你更好地理解如何在实际项目中应用这些API。 为了充分...

    swt_jface_api

    6. **Data Binding**:JFace提供的特性,允许将模型的数据自动同步到视图中。 在实际开发中,SWT和JFace结合使用,可以构建出功能强大且用户友好的图形界面。例如,你可以使用JFace的Dialog创建一个带有表单的...

    swt jface_API_CHM.zip

    1. **Data Binding**: JFace的数据绑定框架允许开发者轻松地将模型数据与UI组件关联起来,实现数据的自动同步。 2. **Views and Parts**: 在Eclipse插件开发中,JFace的View和Part概念用于构建可重用的GUI组件。...

    SWT GridViewer_1.0包

    通过使用JFace Data Binding,开发者可以轻松地将界面控件(如GridViewer)与业务模型关联起来,实现数据的实时更新和同步。这包括添加观察者来监听模型的变化,以及在界面中反映这些变化。 **4. org.eclipse....

    eclipse jface

    5. **数据绑定(Data Binding)**:JFace的数据绑定框架允许将UI组件与业务对象直接关联,当业务对象改变时,UI会自动更新,反之亦然,简化了数据模型和视图之间的同步。 6. **表单(Form)** 组件:JFace提供了表单...

Global site tag (gtag.js) - Google Analytics