论坛首页 编程语言技术论坛

对PureMvc的一些印像

浏览 7769 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-06-04   最后修改:2009-06-04

       学习了一下PureMVC,写了笔记:读书笔记:puremvc framework implementation idioms and……。以下是对PureMVC的一些印像:

 

优点:
一、模式用得多,看文档的过程感觉就像把23种基本模式复习了一次。[用了多少模式,具体没数过。但23种模式中,也用得七七八八了]。所以就算学了PureMVC后不使用也不浪费学习时间。

 

二、解耦,整个系统都由中间层及Notification机制解耦了。[是否解耦得太过份了?]

 

 

缺点:
1、角色(类形)太多,角色间关系复杂(一对多,多对多)。

 

 

2、过份依赖观察者模式、配置零散、不方便维护及调试:

一、PureMvc推崇的是解耦,但解耦直接的结果就是单靠IDE(ctrl+点击)根本找不到代码调用的路线。代码每到一处就是发送一个Notification。然后调用路线就断了。要继线就要找配置。看了官方的demo(appskeleton),配置的地方是分散的。Command在facade中的配置,Mediator中对notification的配置、Proxy……。

 

 

二、别人可能说,UI本来就是事件模型。调用关系本来就没有服务端明确。其实这个不一定。如果把事件限制在一些特定层中,调用关系还是很明确的。

 

 

3、需要编写的额外代码烦多。

 

 

4、不提供额外功能。
Spring提供声名式事务支持。Hibernate简化持久层操作。PureMVC提供什么额外功能?

 

 

以下是我对框架中一些角色的理解:

 

一、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实践经验的出来指导指导。

   发表时间:2009-06-04  
PureMVC并不只针对actionscript(flex),它针对好多种不同的语言。
现在参与的一个项目,做了应用算是比较大,思维也从b/s转为c/s思考模式,但最开始由于嫌麻烦,没使用框架。
到现在应用做大了,感觉还是需要框架。。。像现在一个mxml里,as代码就差不多达到1000行以上[不要说这是我们设计问题,我觉得没太大必要将as单独成as文件再import或include,vo除外]
0 请登录后投票
   发表时间:2009-06-04  
PureMVC华而不实,过犹不及,谁用谁后悔。等着消息乱发而不知道来源,导致代码胡乱执行的时候就知道什么是痛苦了。
0 请登录后投票
   发表时间: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混在一起。这不是框架问题。是基本的面向对像问题。
0 请登录后投票
   发表时间: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是有独立的包以及类的,如果连这都不分那就太菜了
0 请登录后投票
   发表时间:2009-06-11  
第一:框架硬性规定了mxml与as分开?通过接口还是什么手段?别告诉我是框架文档中的建议。

第二:我觉得“封装”与“责任分离”是面向对像比较重要的特性和原则。ML语言的责任是处理图形布局,脚本的责任是处理逻辑。这些在大部份的UI中都有说明,例如:html与js,mxml与as,android中的xml与java。

反正就是一句话:面向对像基础好,不用框架,一样可以开发出好系统。面向对像基础不好,用PureMVC不会起到改善代码的质量。重要的是,面向对像基础不好,而又用了PureMVC,会得到反效果。
0 请登录后投票
   发表时间:2009-07-31   最后修改:2009-07-31
为什么不试试 WeeMVC?
WeeMVC 是一种微型、简洁的ActionScript?快速开发框架
http://www.iteye.com/topic/320855
0 请登录后投票
   发表时间:2009-08-24  
presses 写道

       学习了一下PureMVC,写了笔记:读书笔记:puremvc framework implementation idioms and……。以下是对PureMVC的一些印像:

 

优点:
一、模式用得多,看文档的过程感觉就像把23种基本模式复习了一次。[用了多少模式,具体没数过。但23种模式中,也用得七七八八了]。所以就算学了PureMVC后不使用也不浪费学习时间。

-------->所以我觉得PureMVC是在用模式跟我们讨论,已超越了代码这一层次,这已是他的初衷,作者始终认为MVC是UI开发的最终要义。

 

二、解耦,整个系统都由中间层及Notification机制解耦了。[是否解耦得太过份了?]

-------->portable啊,和flex中的event有所区别,也更清楚的展现了PureMVC的中心思想,MVC是不分语言的UI普世价值。

 

 

缺点:
1、角色(类形)太多,角色间关系复杂(一对多,多对多)。

--------->还多啊?PureMVC一个图就能展现所有的东西,还叫多?看看他的源代码,那叫一个精炼,有那个框架敢像pureMVC那样说基本上不用在更新什么?!

 

 

2、过份依赖观察者模式、配置零散、不方便维护及调试:

一、PureMvc推崇的是解耦,但解耦直接的结果就是单靠IDE(ctrl+点击)根本找不到代码调用的路线。代码每到一处就是发送一个Notification。然后调用路线就断了。要继线就要找配置。看了官方的demo(appskeleton),配置的地方是分散的。Command在facade中的配置,Mediator中对notification的配置、Proxy……。

--------->ctl+点击....咩框架最中你意。。。spring,struts,hibernate都可以回家吃饭嘞

 

 

二、别人可能说,UI本来就是事件模型。调用关系本来就没有服务端明确。其实这个不一定。如果把事件限制在一些特定层中,调用关系还是很明确的。

 

 

3、需要编写的额外代码烦多。

-------->代码生成,你是不是觉得你需要写一些雷同的代码?

 

 

4、不提供额外功能。
Spring提供声名式事务支持。Hibernate简化持久层操作。PureMVC提供什么额外功能?

-------->把咱们本来看到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是我见过最纯粹的一个框架(未避免口水加个“之一”吧):只做一件事情而且尽力做到最好。

 

0 请登录后投票
   发表时间:2009-08-24  
lydawen 写道
PureMVC并不只针对actionscript(flex),它针对好多种不同的语言。
现在参与的一个项目,做了应用算是比较大,思维也从b/s转为c/s思考模式,但最开始由于嫌麻烦,没使用框架。
到现在应用做大了,感觉还是需要框架。。。像现在一个mxml里,as代码就差不多达到1000行以上[不要说这是我们设计问题,我觉得没太大必要将as单独成as文件再import或include,vo除外]

mxml这么大.没见过.出来的swf有多大?
0 请登录后投票
   发表时间: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。

0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics