快速业务通道

从Java类库看设计模式(5) - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17
很难作出一个能够适应不同View的一般化的Controller来,而且,一般也没有很大 的必要。

从Java类库看设计模式(5)(2)

时间:2011-04-23 IBM 刘武东

在Swing中基本上每一个组件都会有对应的Model对象。但其并不是一一对应的,一个 Model接口可以为多个Swing对向服务,例如:JProgressBar,JScrollBar,JSlider这三个组 件使用的都是BoundedRangeModel接口。这种模型的共享更能够从分的体现MVC的内涵。除了 Model接口外,为了实现多个视感间的自由切换,每个Swing组件还包含一个UI接口--也就是 View-Controller,负责对组件的绘制和接受用户输入。

Model-View是Subject和Obverser的关系,因而,模型的改变必须要在UI对象中体现出来 。Swing使用了JavaBeans的事件模型来实现这种通知机制。具体而言,有两种实现办法,一 是仅仅通知事件监听者状态改变了,然后由事件监听者向模型提取必要的状态信息。这种机 制对于事件频繁的组件很有效。另外的一种办法是模型向监听者发送包含了已改变的状态信 息的通知给UI。这两种方法根据其优劣被分别是现在不同的组件中。比如在JScollBar中使用 的是第一种方法,在JTable中使用的是第二种方法。而对Model而言,为了能够支持多个View ,它并不知道具体的每一个View。它维护一个对其数据感兴趣的Obverser的列表,使得当数 据改变的时候,能够通知到每一个Swing组件对象。

上面讲到的是作为设计模式的MVC。而在J2EE中,Sun更是将MVC提升到了一个体系结构模 式的高度,这儿的MVC的含义就更为广泛了。与Swing中不同的是,在这儿MVC的各个部件不再 是单纯的类或者接口,而是应用程序的一个组成部分!

在J2EE Blueprint中,Sun推荐了一种基于MVC的J2EE程序的模式。对于企业级的分布式应 用程序而言,它更需要支持多种形式的用户接口。比如,网上商店需要一个HTML的界面来同 网上的客户打交道,WML的界面可以提供给无线用户,管理者可能需要传统的基于Swing的应 用程序来进行管理,而对对商业伙伴,基于XML的Web服务可能对他们更为方便。

MVC无疑是这样一个问题的有效的解决方法,通过在控制和显示逻辑分离出核心的数据存 取功能,形成一个Model模块,能够让多种视图来共享这个Model。

在J2EE中有几个核心的技术,JSP,JavaBean,Servlet,EJB,SessionBean,EntityBean 构成了J2EE构架的基石。JSP能够生成HTML,WML甚至XML,它对应于Web应用程序中的View部 分。EJB作为数据库与应用程序的中介,提供了对数据的封装。一般EntityBean封装的是数据 ,SessionBean是封装的是对数据的操作。这两个部分合起来,对应于Web应用程序的Model部 分。在技术上,JSP能够直接对EJB进行存取,但这并不是好办法,那样会混淆程序中的显示 逻辑和控制逻辑,使得JSP的重用性能降低。这时候有两种解决方法,通过JavaBean或者 Servlet作为中介的控制逻辑,对EJB所封装的数据进行存取。这时,JavaBean或者Servlet对 应于Web引用程序中的Controller部分。两种类型的Controller各有其优缺点:JSP同Servlet 的交互不容易规范化,使得交互的过程变得复杂,但是Servlet可以单独同用户交互,实际上 JSP的运行时状态就是Servlet;而由于JavaBean的规范性,JSP同JavaBean的交互很容易,利 用JavaBean的get/set方法,JSP不需要过多的语句就可以完成数据的存取,这能够让JSP最大 限度的集中在其视图功能上,而且,在桌面应用程序中使用JavaBean也很容易,而用Servlet 就相对麻烦许多。根据不同的问题背景,可以选取不同的Controller,有时候也可以两者混 合使用,或者直接在Servlet中调用JavaBean。

在J2EE中,MVC是一个大的框架,这时我们往往把它不再看作为设计模式,而是作为体系 结构模式的一个应用了。

总结

在这篇

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号