【IT168 评论】MVC是了不起的想法。你有模型——带有很好的内部独立状态,视图——内部处理UI,可控制器——可以处理.....控制器处理什么!我不是第一个注意到这个问题的人。你的MVC很可能在控制器里写了很多的代码,因为你也不知道该写在别的什么地方。
为了解决这个问题,我开始使用新的设计模式:MOVE,Models(模型),Operations(操作),Views(视图),Events(事件)。
概述
我可以马上阐明模式细节,不过先看看这个MOVE应用的基本结构图。
• Models封装了应用需要知道的所有事情;
• Operations封装了应用做的所有事情;
• Views是应用于用户的中介;
• Events将各个组件安全地组合起来。
为了避免意大利面式代码(全搅合在一起),我建议为每个部分定义他们该做的事情。我在图中用肩头说明。比如,views可以监听model触发的events,operations允许修改models,但models不允许引用operations和views。
模型
例如一个原型Model是一个user对象。至少对象里有一个email,可能还有name和phone number。
在MOVE应用里,models只封装需要知道的内容。也就是说,除了getter和setter,还可能有比如“是不是用户的密码”,但他不带有存储数据到数据库,或操作API的功能。这些是operation的工作。
Operations
一个常见的operation就是用户登录。里面有两个子操作:从用户获取email和password,从数据库数据加载user model并匹配password。
Operations是MOVE世界的工作狂。他负责修改models,显示正确的views,返回用户触发的events。在分工细化的应用里,所有子操作都是独立于母体运行,这就是为什么events向上的,而operations是向下的。(events负责召唤法式,operations负责通灵实体)。
而且更好玩的,可以把整个应用认为是一个operation,在程序boot时启动operation。他包含很多的子操作,他们之间是并行的。退出应用时,他们又都完成停止。