Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 1310|回复: 0

Swing MVC 结构

  [复制链接]

该用户从未签到

发表于 2011-9-14 20:09:06 | 显示全部楼层 |阅读模式
MVC 是 Model-View-Controller 的简称,即模型—视图—控制器。这个模式最早是应用在 Xerox PARC 的 SmallTakl 语言上,至今已经得到广泛的认可。  下面就对 java Swing MVC 的概念进行如下说明。
    [li]  ·模型(Model):是存储 Swing 组件数据的地方,例如 JTable 的 Model 会存储表格上的所有数据。负责维护数据。模型通常提供访问和修改数据的方法。当模型变化时,这个模型还把事件发送给已登记的视图,对此,视图根据模型的变化来更新自己。 [li]  ·视图(View):指 Swing 组件的外观显示效果。负责提供模型的部分数据的可视图。 [li]  ·控制器(Controller):响应用户在 Swing 组件上的具体操作,为视图处理事件。鼠标和动作监听器等 AWT 和 Swing 监听器都是 MVC 控制器。[/li]
  图1显示了这几个模块各自的功能及它们之间的相互关系。   
图1 MVC 设计模式  MVC 需要很强的设计功能。分述如下:  首先,应当把多个视图和控制器插入到单个模型中,这是 Swing 插入式界面样式的基础。  其次,当模型改变时,模型的视图能够自动地得到通知。在一个视图中改变模型的属性,将导致模型其他的视图也随之更新。  最后,由于模型独立于视图,所以,不需要修改模型来适应新类型的视图或控制器。  (1)插入式视图和控制器  Swing 容器把定位它们所包含的组件及确定这些组件大小的工作委托给一个布局管理器。布局管理器封装了布局组件的策略。例如,FlowLayout 布局管理器的策略是用组件的首选大小来安排组件的大小,并以从左到右、从上到下的顺序定位组件。  封装的策略使它们是可插入的。例如,布局管理器可以在编译时,也可以在运行时插入到容器中。  通过封装在视图中可视地表示数据的策略及封装控制器中处理事件的策略,MVC 体系结构提供了可插入视图和控制器。就像布局管理器可以插入到 AWT 和 Swing 组件中一样,视图和控制器也可以插入到模型中。  (2)视图更新  Swing (和 AWT )事件由向事件源登记了的事件监听器来处理。例如,按钮的激活事件由一个对象所处理,这个对象实现 ActionListener 接口,并且通过调用这个按钮的 addActionListener 方法向这个按钮进行了登记。  事件源和监听器是 Observer 样式的一个例子,Observer 样式允许单个对象在所观察的对象修改时通知许多观察器。Observer 样式需要在被观察对象与它的观察器之间有一个很小的接口区。例如,上面描述的动作监听器可以是任何类型的对象,只要它实现 ActionListener 接口。而且,按钮除了知道如何和何时通过观察器之外,对观察器一无所知。  当模型改变时,MVC 体系结构使用 Observer 样式来通知视图。模型可以有许多视图,所有的视图通常都用模型的通知来同步。而且,任何类型的视图都可以在不使模型本身有任务变化的情况下观察一个模型。  事件由控制器处理,控制器根据事件的类型来改变模型一个或多个视图。  模型维护一个视图列表,这些视图为获得模型变化通知已经向模型登记过了。当模型发生变化时,该模型通知已向此模型登记的每个视图。视图通常从该模型中获得信息以进一步澄清这个事件,接着再更新它们自己。  MVC 的优点是:很久以来,MVC 体系结构一直是建立在 Smalltalk 应用程序的基础上。面向对象开发的最基础的方面是确认对象并在类中封装对象。例如,一个工资册应用程序可能确认雇员、工资等对象。在类中封装对象允许在对象间建立松散的联系,这样就减少了依赖性,增加了灵活性和再使用性。  MVC 封装了3个在大多数图形应用程序都存在的通用对象:模型、视图和控制器。通过封装其他体系结构的优秀特性,MVC 应用程序比相应的传统应用程序更灵活和更具有使用性。  Swing MVC 是典型 MVC 的专业版本,其设计目的是支持插入式界面模式而不是通用应用程序。Swing 轻量组件由下面的对象组成:
    [li]  ·一个维护组件的数据模型。 [li]  ·UI 代表,它是一个带事件处理监听器的视图。 [li]  ·一个扩展 JComponent 的组件。[/li]

  Swing 模型可以直接对应典型的MVC模型。这两个模型都维护数据并提供数据访问方法,当它们发生变化时,它们会通知监听器。
  Swing 组件把它们的界面样式交给一个UI代表来处理。UI代表与典型的MVC中的视图控制器组合相对应。从现在开始,控制器又称做监听器。Swing监听器通常作为UI代表的内部类来实现,并且根据组件所表现的复杂程序,组件代表可以有许多处理事件的内部类监听器。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

  • TA的每日心情
    开心
    2021-12-13 21:45
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    发表于 2011-11-3 17:02:06 | 显示全部楼层
    不错啊啊。。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2012-5-14 10:45:02 | 显示全部楼层
    非常谢谢楼主,顶一下
    悠哉网www.sadnook.com
    中国讲座在线www.douya5.cn
    尚生活www.027up.com
    悠哉教育www.yoozai.com
    武汉数据www.whdata.net
    要爱你www.1l0.cn








    悠哉网www.sadnook.com
    中国讲座在线www.douya5.cn
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-6-19 13:48 , Processed in 0.388122 second(s), 46 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表