




免费预览已结束,剩余16页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java与MVC设计模式,洪彬,MVC模式介绍,模型视图控制器(Model-View-Controller,MVC)模式是为那些需要为同样的数据提供多个视图的应用程序而设计的。它很好地实现了数据层与表示层的分离,特别适用于开发与用户图形界面有关的应用程序。模式中基本结构定义为:控制器用来处理用户命令以及程序事件的;模型维护数据并提供数据访问方法;视图数据的显示。,MVC模式基本实现过程为:1.控制器新建模型。控制器要新建一个或多个视图对象,并将它们与模型相关联;3.控制器改变模型的状态;4.当模型的状态改变时,模型将会通知视图刷新相关的显示。,基本MVC模式,Java通过专门的类Observable及Observer接口来实现MVC设计模式。,MVC模式的时序图,一个例子,该程序主要由三个类构成,分别为Sphere类、TextView类及SphereWindow类。其中Sphere类扮演Model的角色,TextView类为View角色,SphereWindow类为Controller角色。Model类需继承Observable类,View类需实现接口Observer。,当用户在图形化用户界面输入一个球体的半径时,程序将显示该球体的体积与表面积。,一个例子,Model类Sphere,必须扩展Observable类,因为在Observable类中,方法addObserver()将视图与模型相关联,当模型状态改变时,Sphere通过方法notifyObservers()通知视图。View类的角色TextView类必须实现接口Observer,需实现其中的方法update()。有了这个方法,当模型Sphere类的状态发生改变时,与模型相关联的视图中的update()方法就会自动被调用,从而实现视图的自动刷新。,一个例子,SphereWindow类作为Controller,它主要新建Model与View,将View与Model相关联,并处理事件,UML图,importjava.util.Observable;classSphereextendsObservable.publicvoidsetRadius(doubler)myRadius=r;setChanged();notifyObservers();.,importjava.util.Observer;importjava.util.Observable;publicclassTextViewextendsJPanelimplementsObserver.publicvoidupdate(Observableo,Objectarg)Sphereballoon=(Sphere)o;radiusIn.setText(+f3.format(balloon.getRadius();volumeOut.setText(+f3.format(balloon.volume();surfAreaOut.setText(+f3.format(balloon.surfaceArea();.,importjavax.swing.JPanel;importjavax.swing.JFrame;importjava.awt.Container;importjavax.swing.JTextField;classSphereWindowextendsJFramepublicSphereWindow()super(Spheres:volumeandsurfacearea);model=newSphere(0,0,100);TextViewview=newTextView();model.addObserver(view);view.update(model,null);view.addActionListener(this);Containerc=getContentPane();c.add(view);publicvoidactionPerformed(ActionEvente)JTextFieldt=(JTextField)e.getSource();doubler=Double.parseDouble(t.getText();model.setRadius(r);,再拓展一下,该程序是通过Java中的MVC模式编写的,具有极其良好的可扩展性。它可以轻松实现以下功能:1.实现一个模型的多个视图;2.采用多个控制器;3.当模型改变时,所有视图将自动刷新;4.所有的控制器将相互独立工作。这就是Java编程模式的好处,只需在以前的程序上稍作修改或增加新的类,即可轻松增加许多程序功能。以前开发的许多类可以重用,而程序结构根本不再需要改变,各类之间相互独立,便于团体开发,提高开发效率。,一个模型、两个视图和一个控制器,下面我们讨论如何实现一个模型、两个视图和一个控制器的程序。当用户在图形化用户界面输入一个球体的半径,程序除显示该球体的体积与表面积外,还将图形化显示该球体。,其中Model类及View1类根本不需要改变,与前面的完全一样,这就是面向对象编程的好处。对于Controller中的SphereWindows类,只需要增加另一个视图,并与Model发生关联即可。其关键实现代码为:,publicSphereWindow()super(Spheres:volumeandsurfacearea);model=newSphere(0,0,100);TextViewtView=newTextView();model.addObserver(tView);tView.addActionListener(this);tView.update(model,null);GraphicsViewgView=newGraphicsView();model.addObserver(gView);gView.update(model,null);Containerc=getContentPane();c.setLayout(newGridLayout(1,2);c.add(tView);c.add(gView);,MVC模式的Java组件,许多JavaSwing组件使用了MVC的设计模式如JButton、JTextField、JPasswordField等主要用于格式化用户的输入,防止非法输入。在密码域中用回显字符(echocharacter)代替输入的字符串也用到了这种模式。Java中的格式器、过滤器、检验器等都是MVC的应用。,简单的应用,JavaSwing中有个JTable类,有三种工作模式:不可编辑;可编辑但不可改变模型的数据能够改变模型数据演示程序,关键代码,publicclassunEditableextendsAbstractTableModelpublicunEditable()publicintgetRowCount()return5;publicObjectgetValueAt(introwIndex,intcolumnIndex)returncellrowIndex*2+columnIndex;publicStringgetColumnName(intcolumn)returncolumnNamescolumn;privateStringcell=newStringJim,123456,Bob,2123,King,5215,Rechard,54552,Garfield,52463;privateStringcolumnNames=newStringName,Password;,关键代码,/unChangableModelpublicbooleanisCellEditable(intr,intc)returnc=0|c=1;/changableModelpublicvoidsetValueAt(Objectvalue,intr,intc)cellr*2+c=(String)value;,MVC的优点,首先,最重要的是有多个视图对应一个模型的能力。在目前用户需求的快速变化下,可能有多种方式访问应用的要
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 丙肝工作管理制度
- 业主进度管理制度
- 业务挂靠管理制度
- 业务津贴管理制度
- 业务经费管理制度
- 东莞宿舍管理制度
- 丝织车间管理制度
- 严格内部管理制度
- 个人捐款管理制度
- 个人病情管理制度
- 《美国太空优先事项框架》解读分析
- 《非物质文化遗产数字化保护 数字资源采集和著录 第9部分:传统技艺》
- 中药鉴定综合技能-矿物类中药鉴定
- 2022-2023学年福建省福州市鼓楼区数学六年级第二学期期末教学质量检测试题含解析
- 语言学概论复习(全)
- 公务员考试理论与实践(山东联盟)知到章节答案智慧树2023年山东财经大学
- 工艺安全检查表
- 洗染行业消费纠纷处理指南
- GB/T 19995.1-2005天然材料体育场地使用要求及检验方法第1部分:足球场地天然草面层
- 全民经纪人协议书
- 护理学课件-铺床法
评论
0/150
提交评论