`
huangyiming2009
  • 浏览: 22672 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

swing的MVC

阅读更多
说到MVC,大家都知道他是构建GUI的有力模型。不过MVC本身比较抽象和宽泛,所以对于它的实现有很多。
     swing对于MVC的实现用一句话来说就是:一个GUI组件对应着一个MVC体系。
     在这个体系当中JComponent这样的组件就扮演者MVC中的C,那拿JTable来说,MVC 就是 TableModel JT的able 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的可插拔外观特性.
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics