zoukankan      html  css  js  c++  java
  • MVC/MVP 模式的缺点

    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的值.
  • 相关阅读:
    Application package 'AndroidManifest.xml' must have a minimum of 2 segments.
    让“是男人就下到100层”在Android平台上跑起来
    移植一个cocos2d-x游戏
    cocos2d-x宏定义
    职场之需求
    cocos2d-x for android配置 & 运行 Sample on Linux OS
    input函数出现的问题(Python)
    职场之英语
    职场之随手记
    应用商店后台MIS的一些思考
  • 原文地址:https://www.cnblogs.com/zitjubiz/p/1840751.html
Copyright © 2011-2022 走看看