MVC/MVP 模式的缺点

时间:2021-09-01 16:51:18

MVC/MVP 模式本质上是一个结构型模式, 客户端要触发一些Action,传递到Controller之后,再由它决定做什么动作,显示什么视图.

对于比较简单的Web界面还能应付, 但要做RIA界面,就有些勉为其难了.比如一个股票软件,界面上有几十个股票要实时更新股价.

估计很多人会说用Ajax可以搞定. 其实AJax出现了应该有10年了吧.最近才流行起来. 我感觉这个只是一个为实现富界面的丑陋的补丁.

因为它使得页面的流程变得很复杂. 比如说你要Ajax效果里面再嵌套一个Ajax效果,估计就歇菜了....

 

对象设计:角色、责任和协作"(Object Design: Roles, Responsibilities, and Collaborations))一书提出职责驱动开发,将领域对象行为上升为重点,提出了对象其实是在扮演某种角色,而角色是有职责的,然后会在一定场景上下文环境中实施一定交互行为 .

该书总结了集中式控制器4大缺点,MVC的控制器实际就属于这种集中式控制器风格:

1.Control logic can get overly complex. 控制器会变得复杂

2.Controllers can become dependent on information holders' contents.控制器变得依赖信息数据中心或数据库了,控制器做很多事情,意味着领域对象就做很少事情,控制器最后不是只会做什么,决定战略性的事情,也和怎么做,如何实现等战术问题耦合。

3.Objects can become coupled indirectly through the actions of their controller. 对象将间接地通过控制器的action耦合在一起,一个对象在控制器中查询获得,然后复制给另外一个对象,这两个对象就耦合在一起。

4.The only interesting work is done in the controller.唯一有趣的工作是做控制器

 

微软的Model View ViewModel (MVVM)其实也是对MVC模式的分解,控制器变得可有可无,ViewModel变得非常重要,它起到数据绑定和转换作用 

 

股票软件,界面上有几十个股票要实时更新股价,这样的话,界面的UI直接绑定到Object, Object的数值变化直接影响UI的值.