锁定老帖子 主题:对PureMvc的一些印像
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-06-04
最后修改:2009-06-04
学习了一下PureMVC,写了笔记:读书笔记:puremvc framework implementation idioms and……。以下是对PureMVC的一些印像:
优点:
二、解耦,整个系统都由中间层及Notification机制解耦了。[是否解耦得太过份了?]
缺点:
2、过份依赖观察者模式、配置零散、不方便维护及调试: 一、PureMvc推崇的是解耦,但解耦直接的结果就是单靠IDE(ctrl+点击)根本找不到代码调用的路线。代码每到一处就是发送一个Notification。然后调用路线就断了。要继线就要找配置。看了官方的demo(appskeleton),配置的地方是分散的。Command在facade中的配置,Mediator中对notification的配置、Proxy……。
二、别人可能说,UI本来就是事件模型。调用关系本来就没有服务端明确。其实这个不一定。如果把事件限制在一些特定层中,调用关系还是很明确的。
3、需要编写的额外代码烦多。
4、不提供额外功能。
以下是我对框架中一些角色的理解:
一、Mediator的角色我基本认同。它把mxml元素布局与as逻辑分开。但对Mediator中的Notification的映射我觉得这些是多余代码。而switch结构用在这里,我觉得也不优美。另外在调用proxy时,先从facade获取obj,再转形为实现类,转了一大圈回到了原点,显得多余。而这种转化与Spring的工厂也没有可比性。
二、Proxy的角色我也免强认同。Proxy的作用类似于服务端的“瘦模型”。Model只用作数据容器,Proxy处理域逻辑。“瘦模型”用在客户端。其实也可以。但在proxy发送notification。我反对,我上面说过,事件(观察者模式)用在特定层可以接受,但事件惯穿业务层、惯穿整个系统。我反对。
三、Command的角色我也认同。其实就是业务层,没什么可说的。
四、facade的角色我不认同。反正代码最后import的都是实现类。这个facade不多余吗?
五、Notification这个角色我不认同。as已内置事件模式,没必要自已增加一个观察者模块。另外notification的用法,我也不认同。
总结:PureMVC的作用很大程度上是解耦。但我对这种解耦程度很有疑问。它带来的好处与它带来的缺点比例多大?
最后虽然我对PureMVC持反对态度,但存在即合理,而且有这么多人支持。PureMVC也肯定有他的过人之处。希望有PureMVC实践经验的出来指导指导。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-06-04
PureMVC并不只针对actionscript(flex),它针对好多种不同的语言。
现在参与的一个项目,做了应用算是比较大,思维也从b/s转为c/s思考模式,但最开始由于嫌麻烦,没使用框架。 到现在应用做大了,感觉还是需要框架。。。像现在一个mxml里,as代码就差不多达到1000行以上[不要说这是我们设计问题,我觉得没太大必要将as单独成as文件再import或include,vo除外] |
|
返回顶楼 | |
发表时间:2009-06-04
PureMVC华而不实,过犹不及,谁用谁后悔。等着消息乱发而不知道来源,导致代码胡乱执行的时候就知道什么是痛苦了。
|
|
返回顶楼 | |
发表时间:2009-06-04
lydawen 写道 PureMVC并不只针对actionscript(flex),它针对好多种不同的语言。
现在参与的一个项目,做了应用算是比较大,思维也从b/s转为c/s思考模式,但最开始由于嫌麻烦,没使用框架。 到现在应用做大了,感觉还是需要框架。。。像现在一个mxml里,as代码就差不多达到1000行以上[不要说这是我们设计问题,我觉得没太大必要将as单独成as文件再import或include,vo除外] 我相信:越通用,越不实用。PureMVC文档中说到由于PureMVC设计不针对AS,所以没用AS内置的事件模型。这不是为了通用性而增加学习成本吗? mxml与as混在一起。这不是框架问题。是基本的面向对像问题。 |
|
返回顶楼 | |
发表时间:2009-06-11
presses 写道 lydawen 写道 PureMVC并不只针对actionscript(flex),它针对好多种不同的语言。
现在参与的一个项目,做了应用算是比较大,思维也从b/s转为c/s思考模式,但最开始由于嫌麻烦,没使用框架。 到现在应用做大了,感觉还是需要框架。。。像现在一个mxml里,as代码就差不多达到1000行以上[不要说这是我们设计问题,我觉得没太大必要将as单独成as文件再import或include,vo除外] 我相信:越通用,越不实用。PureMVC文档中说到由于PureMVC设计不针对AS,所以没用AS内置的事件模型。这不是为了通用性而增加学习成本吗? mxml与as混在一起。这不是框架问题。是基本的面向对像问题。 这点我不同意,个人认为这与面向对象没半点关系!如果不使用框架,就从页面上取数据或者控制页面上组件的动作,数据填充,view切换,这有必要将as和mxml分开吗?而这就是框架要解决的问题。当然我们里面大量vo是有独立的包以及类的,如果连这都不分那就太菜了 |
|
返回顶楼 | |
发表时间:2009-06-11
第一:框架硬性规定了mxml与as分开?通过接口还是什么手段?别告诉我是框架文档中的建议。
第二:我觉得“封装”与“责任分离”是面向对像比较重要的特性和原则。ML语言的责任是处理图形布局,脚本的责任是处理逻辑。这些在大部份的UI中都有说明,例如:html与js,mxml与as,android中的xml与java。 反正就是一句话:面向对像基础好,不用框架,一样可以开发出好系统。面向对像基础不好,用PureMVC不会起到改善代码的质量。重要的是,面向对像基础不好,而又用了PureMVC,会得到反效果。 |
|
返回顶楼 | |
发表时间:2009-07-31
最后修改:2009-07-31
|
|
返回顶楼 | |
发表时间:2009-08-24
presses 写道
学习了一下PureMVC,写了笔记:读书笔记:puremvc framework implementation idioms and……。以下是对PureMVC的一些印像:
优点: -------->所以我觉得PureMVC是在用模式跟我们讨论,已超越了代码这一层次,这已是他的初衷,作者始终认为MVC是UI开发的最终要义。
二、解耦,整个系统都由中间层及Notification机制解耦了。[是否解耦得太过份了?] -------->portable啊,和flex中的event有所区别,也更清楚的展现了PureMVC的中心思想,MVC是不分语言的UI普世价值。
缺点: --------->还多啊?PureMVC一个图就能展现所有的东西,还叫多?看看他的源代码,那叫一个精炼,有那个框架敢像pureMVC那样说基本上不用在更新什么?!
2、过份依赖观察者模式、配置零散、不方便维护及调试: 一、PureMvc推崇的是解耦,但解耦直接的结果就是单靠IDE(ctrl+点击)根本找不到代码调用的路线。代码每到一处就是发送一个Notification。然后调用路线就断了。要继线就要找配置。看了官方的demo(appskeleton),配置的地方是分散的。Command在facade中的配置,Mediator中对notification的配置、Proxy……。 --------->ctl+点击....咩框架最中你意。。。spring,struts,hibernate都可以回家吃饭嘞
二、别人可能说,UI本来就是事件模型。调用关系本来就没有服务端明确。其实这个不一定。如果把事件限制在一些特定层中,调用关系还是很明确的。
3、需要编写的额外代码烦多。 -------->代码生成,你是不是觉得你需要写一些雷同的代码?
4、不提供额外功能。 -------->把咱们本来看到UI就懵了的大脑组织起来,这根本就超越了提供额外功能的层次,授人以渔。
以下是我对框架中一些角色的理解:
一、Mediator的角色我基本认同。它把mxml元素布局与as逻辑分开。但对Mediator中的Notification的映射我觉得这些是多余代码。而switch结构用在这里,我觉得也不优美。另外在调用proxy时,先从facade获取obj,再转形为实现类,转了一大圈回到了原点,显得多余。而这种转化与Spring的工厂也没有可比性。 --------->Mediator角色我觉得是PureMVC的第一重要角色,我们平时老是容易忽略它而造成不可收拾的后果。Notification当然要到这里了,总不能直达UI吧?也不可能只到Command吧?如果你认为Notification只能到Command,那你对Command和Mediator没有很好的理解。facade在这里解耦啊,多好的功能。
二、Proxy的角色我也免强认同。Proxy的作用类似于服务端的“瘦模型”。Model只用作数据容器,Proxy处理域逻辑。“瘦模型”用在客户端。其实也可以。但在proxy发送notification。我反对,我上面说过,事件(观察者模式)用在特定层可以接受,但事件惯穿业务层、惯穿整个系统。我反对。 --------->这就是Notification和flex的Event的分野所在了,如果你把event用到了proxy,那才叫难以接受,之所以要另起一个Notification的东东,是语义上的需要。
三、Command的角色我也认同。其实就是业务层,没什么可说的。 ---------> Command不是业务层。MVC的C啊联系M和V的。
四、facade的角色我不认同。反正代码最后import的都是实现类。这个facade不多余吗? ---------> 解耦啊,M,V,C 就靠这个facade来粘合了,你说重要不重要
五、Notification这个角色我不认同。as已内置事件模式,没必要自已增加一个观察者模块。另外notification的用法,我也不认同。 --------->奇怪很多人质疑这个Notification,虽然as内置事件模型,但是我觉得幸好PureMVC没直接使用event,这个区分真的很好。
总结:PureMVC的作用很大程度上是解耦。但我对这种解耦程度很有疑问。它带来的好处与它带来的缺点比例多大?
最后虽然我对PureMVC持反对态度,但存在即合理,而且有这么多人支持。PureMVC也肯定有他的过人之处。希望有PureMVC实践经验的出来指导指导。 ---------> 我觉得PureMVC是我见过最纯粹的一个框架(未避免口水加个“之一”吧):只做一件事情而且尽力做到最好。
|
|
返回顶楼 | |
发表时间:2009-08-24
lydawen 写道 PureMVC并不只针对actionscript(flex),它针对好多种不同的语言。
现在参与的一个项目,做了应用算是比较大,思维也从b/s转为c/s思考模式,但最开始由于嫌麻烦,没使用框架。 到现在应用做大了,感觉还是需要框架。。。像现在一个mxml里,as代码就差不多达到1000行以上[不要说这是我们设计问题,我觉得没太大必要将as单独成as文件再import或include,vo除外] mxml这么大.没见过.出来的swf有多大? |
|
返回顶楼 | |
发表时间:2009-08-24
presses 写道 lydawen 写道 PureMVC并不只针对actionscript(flex),它针对好多种不同的语言。
现在参与的一个项目,做了应用算是比较大,思维也从b/s转为c/s思考模式,但最开始由于嫌麻烦,没使用框架。 到现在应用做大了,感觉还是需要框架。。。像现在一个mxml里,as代码就差不多达到1000行以上[不要说这是我们设计问题,我觉得没太大必要将as单独成as文件再import或include,vo除外] 我相信:越通用,越不实用。PureMVC文档中说到由于PureMVC设计不针对AS,所以没用AS内置的事件模型。这不是为了通用性而增加学习成本吗? mxml与as混在一起。这不是框架问题。是基本的面向对像问题。 notification和event还是要做区分的, 1.MVC需要notifcation的概念,有了他MVC在概念上就完备了。 2.有了notificaiton的概念,那么能不能用event来实现呢?实现上flash的event会有些限制的,如没办法对所有的event的调用做通用处理如log甚至权限校验等等, 总之,event的目标和notification不匹配,没办法直接用event。 flash的event和notification是两个层次的东西,event我觉得最好还是用在mxml和Mediator之间,超出这个范围,到了MVC的势力范围,显然应该用Notificaiton。 |
|
返回顶楼 | |