锁定老帖子 主题:Struts不能完全用MVC来理解
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2007-03-28
action 内封装了
业务模型 form内存储了 业务模型的属性值 不剖开看的话.... 也应该是model了 PS:struts是mvc2并非mvc |
|
返回顶楼 | |
发表时间:2007-03-28
阳光晒晒 写道 action 内封装了
业务模型 form内存储了 业务模型的属性值 不剖开看的话.... 也应该是model了 PS:struts是mvc2并非mvc 也许我们口中的“model”不是一个东西。你能解释一下吗,举个例子? |
|
返回顶楼 | |
发表时间:2007-03-28
如果你不切开action的话
你怎么知道service层呢? 怎么知道model是怎么样子的呢? 一切都是在迷雾之后 被action+form所封装 每个动作作为一个方法 几个方法组成一个模型 模型的属性存在form中 不是非要向原点切的蛋糕才叫一块蛋糕,#切的也叫一块蛋糕 只要有分割规则就可以作为模型化分规则 例子: 有个飞机 模型 你所说的是 Airplane 属性: 人数 max_person 载重 max_heigh 所在地 airport 动作: 上飞机:load 飞行 fly 下飞机 unload 在我说的model Action: 以下为方法名 load fly unload init ........ form: 以下为属性名 max_person max_heigh airport pageno maxpage ....... 把action+form就是一个model了只是业务分离的不清楚.而已 |
|
返回顶楼 | |
发表时间:2007-03-28
个人觉得没有必要分的很清楚,只要保证良好的扩展性和维护性即可~~~
|
|
返回顶楼 | |
发表时间:2007-03-29
阳光晒晒 写道 如果你不切开action的话
你怎么知道service层呢? 怎么知道model是怎么样子的呢? 一切都是在迷雾之后 被action+form所封装 action是控制器的一部分,他肯定会依赖view。比如struts action,他会依赖HttpResponse, HttpRequest这些类型,他还要从request得到请求参数,把输出文字放到response里面去,物理的和逻辑的依赖都是存在的。如果你把model融合到action中,model和view就分不开了。 form就是页面上的表单,在一些情况下他的属性恰好业务对象的属性一样,但是他根本不能作为代替model。道理很简单,界面上的内容不一定正好对应后台的业务对象。比如我要在界面上显示一个客户和他的最大的一笔订单,在界面上这是一个表单,但是在model层应该是两个关联的类:Customer和Order。 model本身是就应该是清晰的,他可以独立的装配,独立进行测试。不需要action+form为他提供封装。 |
|
返回顶楼 | |
发表时间:2007-03-29
lane_cn 写道 阳光晒晒 写道 如果你不切开action的话
你怎么知道service层呢? 怎么知道model是怎么样子的呢? 一切都是在迷雾之后 被action+form所封装 action是控制器的一部分,他肯定会依赖view。比如struts action,他会依赖HttpResponse, HttpRequest这些类型,他还要从request得到请求参数,把输出文字放到response里面去,物理的和逻辑的依赖都是存在的。如果你把model融合到action中,model和view就分不开了。 form就是页面上的表单,在一些情况下他的属性恰好业务对象的属性一样,但是他根本不能作为代替model。道理很简单,界面上的内容不一定正好对应后台的业务对象。比如我要在界面上显示一个客户和他的最大的一笔订单,在界面上这是一个表单,但是在model层应该是两个关联的类:Customer和Order。 model本身是就应该是清晰的,他可以独立的装配,独立进行测试。不需要action+form为他提供封装。 那么把model 放在struts的哪里呢? 从struts的角度(页面美工角度来看的话) 他们看不到model 为什么只有可能是被封装了 |
|
返回顶楼 | |
发表时间:2007-03-29
action调用model工作,再把工作的结果告诉view。struts框架规定了model的调用方式。
struts的框架里面没有model,任何通用的框架中都不可能有model,model永远要根据自己的业务去开发。 只有象SAP这样的特定领域框架才可能提供model,也只能是提供一个通用性的model,需要根据自己的需要进行扩展。 所有的框架都是为了加强业务对象的功能(比如ORM框架把业务对象自动保存到数据库里)、减少model对view的依赖(比如struts框架所干的事情)。如果不搞业务对象,大搞各种框架,本身就是奇怪的风格。在软件开发的历史上,是先有了model,然后为了解决model身上的问题,才出现各种框架的。 |
|
返回顶楼 | |
发表时间:2007-03-29
这个帖子怎么被放到新手区来了,难道是大家都有很好的理解了吗?还是不屑一辩
|
|
返回顶楼 | |
发表时间:2007-03-29
qinysong 写道 这个帖子怎么被放到新手区来了,难道是大家都有很好的理解了吗?还是不屑一辩 lz你题的太晚了
前年提正好但今年是ROR之年 不是ROR也得ajax 不是ajax也得是jsf 再再不行了也应该用struts2(webwork) 浮燥是流行.... to :lane_cn 引用 action调用model工作,再把工作的结果告诉view。struts框架规定了model的调用方式。 struts的框架里面没有model,任何通用的框架中都不可能有model,model永远要根据自己的业务去开发。 只有象SAP这样的特定领域框架才可能提供model,也只能是提供一个通用性的model,需要根据自己的需要进行扩展。 所有的框架都是为了加强业务对象的功能(比如ORM框架把业务对象自动保存到数据库里)、减少model对view的依赖(比如struts框架所干的事情)。如果不搞业务对象,大搞各种框架,本身就是奇怪的风格。在软件开发的历史上,是先有了model,然后为了解决model身上的问题,才出现各种框架的。 听你说了之后大开眼界 架构师是指model的架构 而非开发框架.... |
|
返回顶楼 | |
发表时间:2007-03-29
阳光晒晒 写道 qinysong 写道 这个帖子怎么被放到新手区来了,难道是大家都有很好的理解了吗?还是不屑一辩 lz你题的太晚了
前年提正好但今年是ROR之年 不是ROR也得ajax 不是ajax也得是jsf 再再不行了也应该用struts2(webwork) 浮燥是流行.... 呵呵。。有道理 |
|
返回顶楼 | |