A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马-zhangping 中级黑马   /  2012-10-18 23:13  /  3439 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

谈谈你对Swing的MVC模式的理解?

评分

参与人数 1黑马币 +15 收起 理由
韩军博 + 15 神马都是浮云

查看全部评分

3 个回复

正序浏览
说到MVC,大家都知道他是构建GUI的有力模型。不过MVC本身比较抽象和宽泛,所以对于它的实现有很多。
     swing对于MVC的实现用一句话来说就是:一个GUI组件对应着一个MVC体系。
     在这个体系当中JComponent这样的组件就扮演者MVC中的C,那拿JTable来说,MVC 就是 TableModel JTable TableUI.
     这种将MVC几乎实施到每一个GUI元素的设计相当的灵活.对于swing 的MVC还有一个重要的特点就是它对于model 作了进一步的区分,那就是真正表达程序数据的model,和仅仅表达界面状态的model.还拿JTable 来说就是: TableModel 与 TableColumnModel.
     在很多地方看到都说swing的这种MVC的划分多被科学家欣赏,这我就不能苟同了,我是普通人,不过我也很欣赏.swing高雅而又不失实用.
     当然也有人会说尽管swing的MVC很精彩,不过通常我们程序中model都不是仅仅对应在一个GUI元素上,甚至不能确定要对应在哪些GUI元素上.
     定义这样的类通常仍然很死:
     class MyModel implements TableModel,ListModel{
    
     }
    
     我觉得对于swing的设计没有什么错,它为每一个组件期待的model定义了相应的接口.但是我们程序当中的model又希望更独立于GUI.
     为了达到两全其美,到可以使用Eclipse里面的IAdaptable
    机制.让你的model具有 IAdaptable能力,这样你就可以将它随便适配到哪个swing model 上.如此的组合真是从头到脚的灵活性.
     还有swing的这种MVC设计也促成了swing的可插拔外观特性.

评分

参与人数 1技术分 +1 收起 理由
韩军博 + 1

查看全部评分

回复 使用道具 举报
MVC是Model-View-Controller的简写。"Model" 代表的是应用的业务逻辑(通过JavaBean,EJB组件实现), "View" 是应用的表示面(由JSP页面产生),"Controller" 是提供应用的处理过程控制(一般是一个Servlet),通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。这些组件可以进行交互和重用。
回复 使用道具 举报
Swing号称是完全按照MVC的思路来进行设计的。在设计开始前,Swing的希望能够达到的目标就包括:
模型驱动(Model-Driven)的编程方式。 提供一套单一的API,但是能够支持多种视感(look-and-feel),为用户提供不同的界面。严格的说,Swing中的MVC实际上是MVC的一个变体:M-VC。 Swing中只显示的定义了Model接口,而在一个UI对象中集成了视图和控制器的部分机制。View和Control比较松散的交叉组合在一起,而更多的控制逻辑是在事件监听者部分引入的。但是,这并没有妨碍在Swing中体现MVC的精髓。事实上,在Swing的开发初期,Swing确实是按照标准的MVC模式来设计的,但是很快的问题就出现了:View和Controller实际上是紧密耦合的,很难作出一个能够适应不同View的一般化的Controller来,而且,一般也没有很大的必要。

评分

参与人数 1技术分 +1 收起 理由
韩军博 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马