`
dingtao
  • 浏览: 56246 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

观察者模式在SEAM中的应用——松耦合的组件驱动事件

阅读更多
本文由丁涛原创,转帖请注明出处:http://dingtao.iteye.com/

Seam组件可以通过方法间简单的调用相互影响。状态组件甚至实现 Observer/Observable 模式。 但在组件直接调用彼此方法的时候,为了使组件在一个比可能存在的更加松耦合的方式下相互作用,Seam提供了:组件驱动事件。

组件(事件产生者):
@Name("helloWorld")
public class HelloWorld {
    @RaiseEvent("hello")
    public void sayHello() {
        FacesMessages.instance().add("Hello World!");
    }
}

通过注解@RaiseEvent("hello"),组件中sayHello()的调用即会引发hello事件,
注意
1. hello事件在这段代码之前是没有做过任何定义的,你可以随便写成什么名字,只要在后面事件消费者(事件监听器)里也使用这个名字即可;
2. 这个事件产生器没有依赖任何事件消费者,事件监听器现在可以完全不依赖于产生器而实现


事件消费者(事件监听器):
@Name("helloListener")
public class HelloListener {
    @Observer("hello")
    public void sayHelloBack() {
        FacesMessages.instance().add("Hello to you too!");
    }
}

通过注解@Observer("hello"),hello事件的发生即会引发调用sayHelloBack()

由此,一个相当松耦合的“组件——事件——监听器”的Observer/Observable模式在SEAM下产生了。
分享到:
评论
1 楼 lihaigreat 2008-10-16  
good

相关推荐

    Seam - 语境相关的组件

    此外,Seam还提供了事件驱动的通信机制,使得组件间可以利用事件进行非侵入式的交互。 Seam的另一个亮点是其对持久层的集成。通过与JPA的集成,开发者可以方便地进行数据库操作,如CRUD(创建、读取、更新和删除)...

    JBOSS SEAM组件中文手册

    2. **事件(Events)**: 事件模型是Seam的一大特色,允许组件之间通过发布和监听事件进行通信,增强了组件间的解耦合。 3. **注入(Injection)**: Seam支持依赖注入,可以将一个组件的实例自动注入到其他组件中,...

    Seam-语境相关的组件

    在Seam中,组件可以看作是应用中的独立单元,它们在特定的上下文中被创建、管理和销毁。上下文是Seam的一个重要概念,它定义了组件生命周期的边界以及组件之间的依赖关系。例如,一个会话上下文中的组件在整个会话...

    seam in action 中文 english

    2. **事件驱动**:Seam支持基于事件的编程模型,使得在不同组件之间传递信息变得更加简单。这有助于实现松散耦合,让代码更易于维护和扩展。 3. **JSF集成**:Seam与JavaServer Faces紧密集成,提供了一种优雅的...

    jboss Seam2.0 语境相关的组件文档

    Seam的DI机制允许对象之间的依赖关系在运行时自动装配,减少了代码的耦合性。开发者可以使用注解(Annotations)来声明依赖,并让Seam负责查找和注入合适的依赖实例。例如,`@In` 和 `@Out` 注解分别用于注入和传出...

    SEAM 中文开发指南

    - **SEAM**:SEAM 是一个基于 Java EE 的企业级应用框架,它简化了复杂的应用程序开发过程,并且提供了丰富的功能来支持业务逻辑的实现。 - **版本信息**:本文档介绍了 SEAM 2.0 GA 版本的功能特性及其使用方法。 ...

    Jboss Seam中文版

    2. **工作原理**:详细讲解了Seam在注册过程中所涉及的核心概念和技术细节,比如事件处理机制、组件通信方式等。 ##### 1.3 Seam中的可点击列表:消息示例 本示例通过实现一个简单的消息列表功能,演示了Seam中...

    jboss seam 中文文档集合

    JFreeChart-1.0.5-Ch.chm提供了详细教程和示例,帮助开发者利用JFreeChart在Seam应用中展示数据。 **7. ANTLR** ANTLR 是一个强大的解析器生成器,用于读取、处理、执行或翻译结构化文本或二进制文件。ANTLR中文...

    seam需要的jar包

    在这个“seam需要的jar包”压缩包中,包含了运行和开发Seam应用程序所需的各种库文件。 首先,Seam框架的核心依赖于JSF,这是Java EE中的一个用户界面组件框架,用于构建交互式Web应用。JSF提供了模型-视图-控制器...

    JBoss Seam 工作原理、seam和hibernate的范例、RESTFul的seam、seam-gen起步、seam组件、配置组件、jsf,jboss、标签、PDF、注解等等

    Seam - 语境相关的组件[满江红20071230]............................................................................................................................ 1 Java EE 框架...........................

    eclipse 工程的 Seam 例子

    Seam、EJB和JSF是Java开发中的三个重要框架,它们在企业级应用程序开发中发挥着关键作用。本文将详细讲解如何在Eclipse环境中创建并理解一个Seam工程的实例,结合EJB(Enterprise JavaBeans)和JSF(JavaServer ...

    jboss seam 中文文档

    - **MVC 推风格**:介绍了在 RESTful 应用中使用“推”风格的 MVC 设计模式的具体实现方法。 #### 三、使用 Seam-gen 快速起步 - **准备工作**:在开始使用 Seam-gen 之前,需要进行一系列的基础配置,包括环境...

    Seam_in_Action

    2. **事件驱动**:Seam基于事件驱动的设计,使得组件间的通信变得更加灵活。开发者可以通过发布和监听事件来实现松耦合的交互。 3. **JSF集成**:Seam与JavaServer Faces紧密集成,提供了一套完整的解决方案来构建...

    Seam - 语境相关的组件 .pdf

    Seam的核心是其上下文相关的组件模型,包括无状态上下文、事件上下文、页面上下文、业务会话上下文、Session上下文、业务流程上下文、应用上下文和上下文变量,它们定义了组件在不同情境下的行为和生命周期。Seam...

    JbossSeam中文开发指南.docx

    Seam事件是一个基于事件驱动的编程模型,能够帮助开发者快速构建企业级应用程序。Seam事件提供了一个统一的编程模型,能够将JSF、EJB、JPA等技术整合在一起,提供了一个强大且灵活的开发环境。 Seam拦截器 Seam...

    seam_in_action

    本书主要讲解了 Seam 框架在 Java EE 3 环境中的应用与开发实践。接下来将根据书名、描述以及部分内容对该书籍涉及的主要知识点进行详细解析。 ### 一、Seam框架简介 #### 1.1 什么是Seam Seam 是一个开源的 Java ...

    Jboss_seam 中英文文档

    3. **事件驱动**:Seam 支持事件驱动的编程模式,允许组件之间通过事件进行通信,增加了代码的灵活性和可扩展性。 4. **集成JSF**:Seam 与JSF深度集成,提供了增强的JSF组件库和更强大的页面导航,简化了前端界面...

    JBoss Seam--A Deep Integration Framework

    这种特性在处理复杂业务逻辑和数据绑定时非常有用,使开发者能够更容易地构建松耦合、可复用的组件。 **总结** JBoss Seam通过其深度集成特性,成功地将多种Java EE技术融合在一起,降低了开发难度,提高了开发...

Global site tag (gtag.js) - Google Analytics