2011-01-24 42 views
2

我听说过“胖模型,瘦控制器”,并相信我明白它的含义。在通过Zend Quickstart Guide工作时,我遇到了表数据网关模式。表数据网关和模型

在我看来,这种设计模式正在向MVC栈提倡第四个组件。它正在从“胖模式”转向“瘦模型,瘦控制器和胖胖的TableDataGateway”。从我对这种设计模式的理解中,Model对于TableDataGateway所涉及的数据来说只是一个存储机制。

我理解表数据网关设计模式与抽象数据源的优点,我的问题不是关于设计模式,而是它如何适应MVC堆栈。

P.S.我有点难以把我的问题变成好话。如果有人想编辑这个以使其更清晰或者提出建议,我已经开放!

回答

8

的MVC架构可以被更新如下:

+------------+ 
| Controller | 
+------------+ 
    ^^
    | |   +------------+  +-------------+ 
    | |-------> | Model  | <--> | Data access | 
    | |   +------------+  +-------------+ 
    | | 
    v v 
+------------+ 
| View  | 
+------------+ 

数据访问部只是一个抽象(基于数据网关的设计模式,或任何其他图案/技术)的其他电平是与您的永久级别(文本文件,数据库或任何其他)交谈的特定部分,如果您需要更改应用程序中的永久级别(即:从MySQL到Oracle),可以轻松替换它们。

这样,唯一必须重写的部分是数据访问级别,应用程序的其余部分仍在工作。该模型的任务现在是以可以由控制器或视图使用的方式格式化数据。

这可能不是最好的或最完整的答案,但它至少是一个开始。

+1

我觉得另一个值得投入的模式是ViewModel模式(参见http://techportal.ibuildings.com/2010/11/02/creative-mvc-meet-the-viewmodel-pattern/)。 – 2011-01-25 06:12:01