1、软件设计与体系结构,6.5 MVC软件体系结构,内容,1.应用场景2.概念与机制3.应用实例4.讨论,2,1.应用场景,引例:设计一个基于互联网的网上二手车拍卖软件,需要有用户图形输入界面,包括车辆的图片、文字介绍以及当前的竞拍价格等信息的显示界面。系统不但要有灵活互动的图形界面人机接口,还应该具有很好的可扩展性。要求:相同的信息可以有不同的显示方式数据的显示必须立即反映出数据的变化用户界面易于改变,甚至在运行时改变,3,二手车数据,文字介绍显示,当前拍价显示,图片表示,1.应用场景,设计方案方案1:将界面和核心功能紧密地耦合在一起缺陷:增加新的功能或修改界面,需要重新编译整个类方案2:将业务
2、逻辑与显示部分分开好处:修改业务逻辑或显示模块时,可以分开进行,4,事务逻辑模块封装数据封装事务逻辑,显示模块用户输入显示信息,图6.96 将业务逻辑模块与显示模块分开,2.概念与机制,MVC(Model-View-Control,模型-视图-控制器)20世纪80年代,为编程语言Smalltalk-80发明后来,被推荐Java EE的设计架构三个部分Model:核心功能(业务逻辑)与数据View:用户显示信息Controller:处理用户输入,界面处理逻辑逻辑结构图:图6.97,5,2.概念与机制,6,2.概念与机制,MVC体系结构的设计类图有多种版本,这里给出两种:一般形式的结构类图:图6.
3、98基于观察者机制的结构类图:图6.99,7,2.概念与机制-一般形式结构类图,8,2.概念与机制-基于观察机制的结构类图,9,2.概念与机制-基于观察机制的结构类图,基于观察者模式Model:被观察者View:观察者Controller:从用户图形界面接收用户输入然后,根据用户输入的类型,调用Model的相应业务功能如用户还有其他请求,也可以调用Model的其他业务功能接着,在Model类的withdraw()方法中,访问数据库的表进行相应的处理。每当Model类发生更新,View也会自动更新,10,3.应用实例,例6.23 采用MVC体系结构(一般形式)的二手车拍卖系统的设计与实现。设计类
4、图:图6.100ModelCarModel:业务逻辑部分tell()方法:通知视图ViewCarGUIView:显示车的图片、文件介绍CatBitView:显示拍卖价格信息Controller根据CarAuctionGUI对象输入客户选择信息更新CarModel类的数据,11,3.应用实例-例6.23,12,3.应用实例-例6.23,程序演示:eg6_23,13,3.应用实例-例6.24,例6.24 采用MVC体系结构(基于观察者模式)设计与实现的二手车拍卖系统,用户输入界面和两个显示视图分别独立显示的情况。设计类图:图6.104,14,3.应用实例-例6.24,15,3.应用实例-例6.24
5、,程序演示:eg6_24,16,3.应用实例-例6.25,例6.25 采用MVC架构(基于观察者模式)设计与实现二手车拍卖系统,用户输入界面和显示视图都在同一个窗口中显示的情况。设计类图:图6.105,17,3.应用实例-例6.25,18,3.应用实例-例6.25,程序演示:eg6_25,19,4.讨论,优点对于同一个模型,可以由不同的视图与控制器,以便提供给用户不同类型的用户图形界面改变-传播机制保证了模型在改变的同时自动刷新所有的视图,所有的视图都同时实时地反映了模型的现有状态MVC体系结构的设计使得改变用户图形界面变得非常容易,MVC架构非常适合业务逻辑较少改变,而用户图形界面需要经常改
6、变的应用。由于全部的核心数据与核心功能在模型中,因此,容易对核心的应用进行测试。可扩展性好。,20,4.讨论,三层体系结构 VS MVC相同之处前者的显示层与MVC的View类似前者的应用层与MVC的Model类似区别各个模块之间的调用关系不同:三层体系结构中,显示层不允许直接调用永久数据存储层。显示层需调用应用层的方法访问永久数据层。而MVC体系结构的程序组件之间的交互是三角形的,两两之间可以直接交互。对数据库的访问方式不同:三层体系结构有永久数据存储层,负责对数据库的访问。而MVC中没有专门模块,一般情况可由Model负责对数据库的访问,但也可由Controller实现此功能。MVC中有一个专门的Controller模块,而层次体系结构中没有。,21,作业,1.画出MVC体系结构的一般形式的结构类图。2.画出应用了观察者机制的MVC体系结构设计类图。,22,
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1