选择显示字体大小

通过java swing看透mvc设计模式


  一个好的用户界面(gui)的设计通常可以在现实世界找到相应的表现。 例如,如果在您的面前摆放着一个类似于电脑键盘按键的一个简单的按钮,然而就是这么简单的一个按钮,我们就可以看出一个gui设计的规则,它由两个主要的部分构成,一部分使得它具有了按钮应该具有的动作特性,例如可以被按下。另外一部分则负责它的表现,例如这个按钮是代表了a还是b。

  看清楚这两点你就发现了一个很强大的设计方法,这种方法鼓励重用reuse,而不是重新设计redesign。你发现按钮都有相同的机理,你只要在按钮的顶上喷上不同的字母便能制造出“不同”的按钮,而不用为了每个按钮而重新设计一份图纸。这大大减轻了设计工作的时间和难度。

  如果您把上述设计思想应用到软件开发领域,那么取得相似的效果一点都不让人惊奇。一个在软件开发领域应用的非常广泛的技术model/view/controller(mvc)便是这种思想的一个实现。

  这当然很不错,但是或许您又开始疑惑这和java基础类jfc(java foundation class)中的用户界面设计部分(swing)又有什么关系呢?好的,我来告诉你。

  尽管mvc设计模式通常是用来设计整个用户界面(gui)的,jfc的设计者们却独创性的把这种设计模式用来设计swing中的单个的组件(component),例如表格jtable,树jtree,组合下拉列表框jcombobox等等等等。这些组件都有一个model,一个view,一个controller,而且,这些model,view,controller可以独立的改变,就是当组件正在被使用的时候也是如此。这种特性使得开发gui界面的工具包显得非常的灵活。

  mvc设计模式把一个软件组件区分为三个不同的部分,model,view,controller。

  model是代表组件状态和低级行为的部分,它管理着自己的状态并且处理所有对状态的操作,model自己本身并不知道使用自己的view和controller是谁,系统维护着它和view之间的关系,当model发生了改变系统还负责通知相应的view。

  view代表了管理model所含有的数据的一个视觉上的呈现。一个model可以有一个以上的view,但是swing中却很少有这样的情况。

  controller管理着model和用户之间的交互的控制。它提供了一些方法去处理当model的状态发生了变化时的情况。

  使用键盘上的按钮的例子来说明一下:model就是按钮的整个机械装置,view/controller就是按钮的表面部分。

  下面的图解释了如何把一个jfc开发的用户界面分为model,view,controller,注意,view/controller被合并到了一起,这是mvc设计模式通常的用法,它们提供了组件的用户界面(ui)。

  用button的例子详细说明

  为了更好的理解mvc设计模式swing用户界面组件之间的关系,让我们更加深入的进行分析。我将采用最常见的组件button来说明。

  我们从model来开始。

  model

  一个按钮的model所应该具备的行为由一个接口buttonmodel来完成。一个按钮model实例封装了其内部的状态,并且定义了按钮的行为。它的所有方法可以分为四类:

  1、查询内部状态

  2、操作内部状态

  3、添加和删除事件监听器

  4、发生事件

法。

  程序员通常并不会直接和model以及view/controller打交道,他们通常隐藏于那些继承自java.awt.component的组件里面了,这些组件就像胶水一样把mvc三者合三为一。也正是由于这些继承的组件对象,一个程序员可以很方便的混合使用swing组件和awt组件,然后,我们知道,swing组件有很多都是直接继承自相应的awt组件,它能提供比awt组件更加方便易用的功能,所以通常情况下,我们没有必要混合使用两者。


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons