mvc设计模式

MVC设计模式

V 即View视图是指用户看到并与之交互的界面。比如由html元素组成的网页界面,或者软件的客户端界面。MVC的好处之一在于它能为应用程序处理很多不同的视图。在视图中其实没有真正的处理发生,它只是作为一种输出数据并允许用户操纵的方式。

M 即model模型是指模型表示业务规则。在MVC的三个部件中,模型拥有最多的处理任务。被模型返回的数据是中立的,模型与数据格式无关,这样一个模型能为多个视图提供数据,由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。
C 即controller控制器是指控制器接受用户的输入并调用模型和视图去完成用户的需求,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后再确定用哪个视图来显示返回的数据。
在这里插入图片描述在这里插入图片描述
举例:
最典型的MVC就是jsp+servlet+javabean模式。

JavaBean作为模型,既可以作为数据模型来封装业务数据,又可以作为业务逻辑模型来包含应用的业务操作。其中,数据模型用来存储或传递业务数据,而业务逻辑模型接收到控制器传过来的模型更新请求后,执行特定的业务逻辑处理,然后返回相应的执行结果。

JSP作为视图层,负责提供页面为用户展示数据,提供相应的表单(Form)来用于用户的请求,并在适当的时候(点击按钮)向控制器发出请求来请求模型进行更新。

Serlvet作为控制器,用来接收用户提交的请求,然后获取请求中的数据,将之转换为业务模型需要的数据模型,然后调用业务模型相应的业务方法进行更新,同时根据业务执行结果来选择要返回的视图。
在这里插入图片描述
举例:
Struts2框架:Struts2是基于MVC的轻量级的web应用框架。Struts2的应用范围是Web应用,注重将Web应用领域的日常工作和常见问题抽象化,提供一个平台帮助快速的完成Web应用开发。基于Struts2开发的Web应用自然就能实现MVC,Struts2着力于在MVC的各个部分为开发提供相应帮助。
在这里插入图片描述在这里插入图片描述ThinkPH P里的MVC

  1. M: Model
    model对应所有的数据操作,相当于将数据库相关进行了-次封装, 每个model就是数据库里的一个表。
    而且有两种操作模型的方式: .

  2. M()方法:直接得到数据库里的表,没有高级功能,只能手动进行CURD

  3. D()方法:实例化modeI对象,不仅可以进行CURD的原子操作,还可以使用ThinkPHP提供的高级方法(自动验证、自动完成等。

对数据的处理只需要在model里放一份代码,避免逻辑混乱的情况。
2.V:html
view在web里是浏览器加载的页面,那么就是html
3.C : Action
每个action对应于一个URL请求,换句话说就是用户的每一个动作(打开某个页面,提交某个数据)都放在一个action里完成。

1|-action收到用户的请求(一个URL地址)
2|-把数据判断加工,放进view里(这里是用到model的部分)
3|-向用户展示结果页面(这里是用到view的部分)

MVC的优点

1.耦合性低
视图层和业务层分离,这样就允许更改视图层代码而不用重新编译模型和控制器代码,
同样,一个应用的业务 流程或者业务规则的改变只需要改动MVC的模型层即可。因为模
型与控制器和视图相分离,所以很容易改变应用程序的数据层和业务规则。
2.重用性高
MVC模式允许使用各种不同样式的视图来访问同- -个服务器端的代码,因为多个视图能
共享一个模型,它包括任何WEB (HTTP) 浏览器或者无线浏览器(wap) ,比如,用
户可以通过电脑也可通过手机来订购某样产品,虽然订购的方式不一样,但处理订购产
品的方式是一样的。 由于模型返回的数据没有进行格式化,所以同样的构件能被不同的
界面使用。
3.部署快,生命周期成本低
MVC使开发和维护用户接口的技术含量降低。使用MVC模式使开发时间得到相当大的
缩减,它使程序员(Java开发人员) 集中精力于业务逻辑,界面程序员(HTML和JSP
开发人员)集中精力于表现形式上。
4.可维护性高
分离视图层和业务逻辑层也使得WEB应用更易于维护和修改。

MVC的缺点

1.完全理解MVC比较复杂
由于MVC模式提出的时间不长,加上同学们的实践经验不足,所以完全理解并掌握
MVC不是一个很容易的过程。
2.调试困难
因为模型和视图要严格的分离,这样也给调试应用程序带来了一定的困难,每个构件在
使用之前都需要经过彻底的测试。
3.不适合小型,中等规模的应用程序
在一个中小型的应用程序中,强制性的使用MVC进行开发,往往会花费大量时间,組
不能体现MVC的优势,同时会使开发变得繁琐。
4.增加系统结构和实现的复杂性
对于简单的界面,严格遵循MVC,使模型、视图与控制器分离,会增加结构的复杂性,
可能产生过多的更新操作,降低运行效率。
5.视图与控制器间的过于紧密的连接并且降低了视图对模型数据的访问
视图与控制器是相互分离,但却是联系紧密的部件,视图没有控制器的存在,其应用是
很有限的,反之亦然,这样就妨碍了他们的独立重用。
依据模型操作接口的不同,视图可能需要多次调用才能获得足够的显示数据。对未变化
数据的不必要的频繁访问,也将损害操作性能。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值