mvc 职能划分_【转】MVC中的操作如何分类(MVC层次的划分)

原帖地址:http://www.cnblogs.com/elaron/archive/2012/11/02/2751747.html

MVC,顾名思义就是Model、View以及Control。

在J2EE中,一般由jsp扮演View层、servlet扮演Control层、java撰写Model层。

众所周知java的好处就是跨平台:一次编写,各种编译。

现在的问题是:

什么样的操作应该有Control层来做,而什么样的操作应该由Model层来完成?

划分方法:

当某一个操作不知道该放在控制层做还是模型层的时候,可以问自己一个问题:

“如果从web应用改成桌面应用,那这个操作还需要做吗?”

如果回答是yes,那就放在model层,否则放着Control层。

比如说有如图的一个操作:

显然,对电流值的大小的“判断”放在Control层或者放在Model层都是可以的。在Control层做好判断以后,再根据情况调用Model层的operation1或2,可以视作是Model层的细粒度封装。

但是,考虑到J2EE中的控制层是用servlet来编写,如果现在工程要改变一种形式,比如,要变成web service + Client App的方式,那么Control层的代码显然就归到了Client端。对于Model层,由于是java编写,因此即使变成web service,那么整个model层的代码和原先的operations还是可用的。但是Control层就要根据client端的平台(可能是PC机要用C#,移动终端要用android或IOS)的不同而改变。

如果将“判断”放到了Control层,那么显然要在各个不同的终端版本上用各种语言编写这个“判断”,而这个工作完全是重复性的。并且,如果判断的方式改变了,比如不是按照阈值判断,而是分成不同的电流层次,如3层、5层等,那么终端的程序就需要升级才能适应新的业务要求。

有人也许要说,之所以一开始设计成web应用就是为了通过浏览器实现“一次编写,到处运行”的目的。但是,在这个移动终端越来越火的年代,很难保证某个应用会不会需要开发终端平台,以用来替代浏览器的展示方式。(比如,土豆等原先纯浏览器模式的厂商也推出了移动终端版本的APP)

所以,控制层应该更多的扮演一种封装界面接口数据并转发的角色,而不应该过多的参与到业务逻辑判断中去。并且,方式2也更符合“高内聚、低耦合”的理念。

因此,第二种划分更好!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值