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的值.
分类:
Design Pattern
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?