MVC中的pull和push

(原文: http://www.guyrutenberg.com/2008/04/26/pull-vs-push-mvc-architecture/)

MVC 中的 Push Pull 主要是用来描述 View Controller 之间的关系。

Push 模式, controller 来解析用户的行为并且产生相应的数据,并将数据推送到 view 中。

 

Pull 模式,这个模式假设用户需要某种 output ,例如一组数据库中的列表信息, view 层将访问 controller 以获得数据,并最终将数据展示给相应的用户。这看起来更像是从 controller 中把数据拉出来。

 

大多数的 web 框架只是实现了一种模式,因为乍一看,两种模式都可以满足用户各类需求。但实际上在某些情况下,二选一的决定才是最合适的。

 

例如,用户希望执行某个特别的动作,好比新增一条回复,他最关心的是这个动作被执行,而对于是否新增成功的反馈信息如何展示并不那么关心。对于开发者来说,希望用户发起一个特别的动作后,会在众多的 controller 中有一个特别的方法可以被 map 到。当某个 controller 在把 action 带的执行结果 push view 时,对应的 view 并不关心到底是谁把数据 push 过来。所以这种情况下, push 模式就更加合适,因为用户的行为被框架解析到一个特别的 controller 来处理,并且 controller 负责把数据 push view 中。

 

Pull 当然也有其适应的场合。试想用户希望获取客户及客户购买商品的列表,用户希望特别的 output 。最好的解决方案是将用户的请求交给 view 处理,然后由 view 利用不同的 controller 来产生用户期望的 output (一个 controller 用来处理 customer 列表,一个 controller 用来处理商品列表 )。那么此类用户请求的处理方式就是通过 view controller 中把数据 pull 出来完成的。

 

诚然,上述两个例子都可以通过另外一个模式来实现,但那个样做会比较复杂。总的来说, push 在处理用户请求的任务时比 pull 要更合适一些,而 pull 在处理用户对数据展示的请求时较 push 更强力些。

猜你喜欢

转载自daur.iteye.com/blog/1384892
今日推荐