在J2EE中实现Observer模式2011-04-13 IBM 唐咸峰引言:设计模式是经验的文档化。它是对被用来在特定场景下解决一般设计问题的类和相互通信 的对象的描述。更通俗的来说,它是一个问题/解决方案对。一旦我们掌握了设计模式,就等 于拥有了一支强有力的专家队伍。它甚至能够使面向对象的新手利用前人的经验找出职责明 确的类和对象,从而获得优雅的解决方案。由于设计模式也是重构的目标,如果在设计的初 期适当地引入设计模式,可以减少重构的工作量。但是,我们也不能陷入模式的陷阱,为了使用模式而去套模式,那样会陷入形式主义。我 们在使用模式的时候,一定要注意模式的意图(intent),而不要过多的去关注模式的实现 细节,因为这些实现细节在特定情况下,可能会发生一些改变。不要顽固地认为设计模式一 书中的类图或实现代码就代表了模式本身。下面,我们来讨论一下为什么要在分布式、多层系统中使用Observer模式。多层体系结构(multi-tier architecture):三层体系结构是多层体系结构中最简单的一种,它一般包括:表示层(presentation)-窗口、报表-业务逻辑层(business logic)-管理业务过程的任务和规则。它又可以细分为领域对象层 (代表领域概念)和服务层(提供数据库交互、安全性、打印报表)。存储层(storage)-持久化存储机制。如数据库服务器等。图一:三层体系结构

而Java 2平台企业版(J2EE)是一种利用Java 2平台来简化诸多与多级企业解决方案的开 发、部署和管理相关的复杂问题的体系结构。它是开放的、基于标准的平台,用以开发、部 署和管理N层结构、面向Web的,以服务器为中心的企业级应用。为了支持领域对象的复用,并且使领域对象的接口变更所带来的影响最小化。我们将领域 层(模型)和表示层(视图)相分离。采用模型-视图模式的意义在于:支持聚合度更高的模型定义,使模型的定义可以集中在领域过程的定义,而不是图形界面 上。允许将模型和用户界面并行开发。使用户界面的需求变化对领域层所造成的影响最小化。允许建立与一个现有的领域层对象相连接的新视图,同时不影响领域层。允许一个模型同时有多个视图,例如使用SVG和表格。