【发布时间】:2012-03-15 10:51:28
【问题描述】:
背景:
我有一个设计模式问题,希望有人能够解决。我用 PHP 编程,但我相信 DAO/VO 在 Java 中很流行。
我已经使用 MVC 很多年了。我设计了一个 MVC 但使用过程编程的购物。因此,最近我决定使用 OO 再次开发购物车。
问题:
我面临的问题是我的 Product 类没有 RetrieveAll() 方法。 例如。如果我列出了 10 种产品,我会从哪个实例调用 RetrieveAll() 方法?我有 10 种选择。
解决方案:
因此,我找到了 DAO/VO 模式。 除非我没有对这个模式进行足够的研究——我相信每个 DB 表都必须有一个 Model + DAO。任何模型或 DAO 都不应该知道另一组模型或 DAO。从而被封装。 该模式非常有意义,将数据库层从模型中拉开。
但是。在购物车中,我的产品被分配了类别。 类别可以是电子产品、服装等。
有 3 个表: - 类别(pid,名称) - 类别项目(iid,名称) - 类别链接(pid,iid)
从 MVC 方法来看,控制器应该与哪个 DAO 对话没有意义?
应该是:
- 控制器与所有 3 个 DAO 对话,然后将适当的数据结构返回给视图?
- 或者 DAO 是否应该相互交谈(以某种方式)并将单个结构返回给控制器?
【问题讨论】:
标签: java php design-patterns