WWW.LOUGH.COM.CN

加入收藏 | 设为首页 | 联系站长
首页 | Java | C&C++ | 数据库 | 经验交流
论坛首页 | 综合区 | 贴图区 | 狐朋狗友 | 学习区 | 站务区
博客首页 | IT技术 | WebServices | Hibernate | Java设计模式 | Struts | AJAX | 数据库
首页 | 中华古籍 | 网络原创 | 随记

Java类库中的设计模式(九)

Java类库中的设计模式(九)

    前面说过了,在Java类库中设计模式的踪影随处可见,因而要讲解所有出现的模式
实在是不可能,这儿主要把焦点聚集在AWT/Swing中,管中窥豹,却也可以了解设计模式
的一些深刻的含义所在。
2.6 MVC模式和Swing组件(3月14日)
    最后要讲的一个MVC模式其实并没有在设计模式那本书中所列的23个模式中出现,而
是作为一个例子出现在书中的。但既然谈到设计模式在Java/AWT/Swing中的应用,我想
很难回避这个模式而不言,因为可以说每一个Swing组件都是MVC模式的一个例子,Swin
g组件就是依据MVC模式而创建的。实际上Swing之所以能够很容易的实现多视感,也得感
谢MVC模式啊。
    面向对象设计的一个原则是,永远不要让一个对象担负太多的责任,这样不利于重
用。所谓MVC,指的是Model-View-Control,也就是模型-视图-控制器。通俗的讲,就是
将一个系统(或者部件)的功能分成三个部分:模型部分用来保存数据,视图部分负责
数据的显示,控制器用于控制响应用户输入。模型应该提供相应的方法来实现内容的修
改。
    MVC模式本身也包含了一些其它的模式。一个模型可以有多个视图与之对应,每个视
图均反映模型的一个侧面或者一种表现形式,当一个视图接受了用户事件,并通过控制
器改变了模型的内容时,其它的视图也会接受到这种变化,这是Observer模式的一个例
子。在有,MVC模式允许你在不改变视图的情况下改变视图对用户的响应方式,这不就是
前面讲到的Strategy模式嘛。而对一个视图而言,在多个控制器中进行选者,又会用到
FactoryMethod模式。
    BWT,现在很流行一种说法,模式正在成为一种语言,一种文化。这种语言和文化加
深了我们对一个问题的理解和表叙能力。上面我就是这种模式语言来解释了MVC的一些特
征,没有多费口舌,我想你也应该明了了其中的含义了吧。如果你不想连别人的话都听
不懂的话,赶快来学习这门最时髦的语言吧。
    在Swing中,对于大多数组件来说,其模型都是由一个名字以Model结尾的接口实现
的。例如对于Jbutton,又一个ButtonModel的接口,实现这个接口的类定义了各类按钮
的状态。又一个DefaultButtonModel类实现了这个接口。而Jbutton用一个名为BasicBu
ttonUI的类来实现其缺省的视图,另外的一个ButtonUIListener的类则作为控制器使用

    大部分的Swing组件都有这样的一个类层次,但对于程序员而言,一般并不需要关心
每个组件中的模型-视图-控制器关系,因为每个组件都提供了一个Wrapper类来封装协调
这三个部分(比如Jbutton类),大多数情况下我们都是同这个Wrapper类打交道。但是
对于模型-视图-控制器的理解和应用可以让我们的程序获得更大的自由。在后面的一部
分中,我们会看到一个应用模型-视图-控制器来扩展组件功能的例子。



关于我们 | 站点地图 | 免责声明 | 联系我们 | ©2003-2007 Lough.com.cn 京ICP备06060948号