webwork开发指南 是逻辑错误?

07-12-02 HRoger
刚看了夏昕的《webwork开发指南》不知道是我的逻辑有问题还是作者的有问题,大家帮忙想想,以下为引用“就笔者的观点而言。Model-Driven 对于维持软件结构清晰性的贡献,超过了其所带来的微不足道的复杂性。记得关于面向对象设计法则的著作《Object-Oriented Design Heuristics》4中有这样一个有趣的问题(可能与原文在文字细节上有所差异,一时找不到原书,只能凭回忆描述):

当你面对一头奶牛的时候,你会对它说“请给我挤一杯牛奶”。

还是对身边的农场工人说“请给我挤一杯牛奶”?

大多程序员对于这样的提问都会不屑一顾,愚蠢的问题,不是么?

不过在软件开发过程中,程序员们却常常不停的对着奶牛大喊“挤牛奶!挤牛奶!”。

回头看看这里的Property-Driven模式,是不是也有点这样的味道……

作为贯穿WebWork MVC的信息载体,Model扮演着奶牛的角色,它携带了我们所需要

的数据资源(牛奶)。而如何操作这些数据,却不是奶牛的任务,而是农场工人(Action)的工作。

如此一来,Property-Driven模式的身份似乎就有点混杂不清。

这也就是笔者所想要表达的意思,Webwork 出于框架灵活性的考虑,提供了

Property-Driven模式供用户选择,但作为用户的我们,还是需要有着一定取舍原则,这里,

笔者推荐将Model-Driven驱动模式作为WebWork开发的首选。"

我现在的问题是既然作者认为Model是扮演着奶牛的角色,那么他推荐使用Model-Driven驱动模式,那他岂不是也对是对着奶牛大喊“挤牛奶!挤牛奶!”。

大家说呢?

banq
2007-12-03 10:51
Model-Driven驱动模式也就是MDD 或 MDD甚至DDD 这是现在分层架构软件开发的主要方向。

webwork作为分层架构中一个之层表现层, 当然要遵循MDD这样大的方向。

>Model扮演着奶牛的角色,它携带了我们所需要的数据资源(牛奶)。

>而如何操作这些数据,却不是奶牛的任务,而是农场工人(Action)的工作

操作Model不应该是Action, Action是MVC中的Controller,是负责前后调度,Action需要依赖service来操作Model,不能越厨代庖,这是MDD基本概念。

我个人认为:表现层的模式就是MVC,表现层是为业务层服务的,而业务层才涉及到MDD等概念。所以,在表现层谈业务层概念,是让人混淆。webwork作为一个诞生在MDD之前的老表现层框架,尽管它借助strut2.0侵入struts体内,但是它的腐朽气味已经散发,所以,就是webwork fans对它和现代MDD思想的解释也有些牵强附会。

是否将Model直接引入表现层?还是在表现层需要一个专门的界面对象?就是象struts1.x中的ActionForm(是不是POJO是另外一个设计细节),但是,至少告诉我们界面对象并不和Model是同一个对象,虽然在简单小的应用,他们可以合二为一,但复杂项目就不是,因为界面对象可能包含一些与jsp显示有关的特别属性,而Model中包含的应该是业务属性,不能加入包含计算机概念的显示有关属性.所以,正式场合下是不能推荐将Model直接引入表现层使用的(尽管方便快),无论是Webwork/struts2.0/JSF

[该贴被banq于2007-12-03 11:16修改过]

[该贴被banq于2007-12-03 11:18修改过]

猜你喜欢