【问题标题】:In a MVP design pattern, who is responsible for accessing the database在 MVP 设计模式中,谁负责访问数据库
【发布时间】:2014-09-25 17:45:43
【问题描述】:
我有一个关于 MVP 设计模式的问题。
我有一个将所有事件传递给演示者的视图。演示者具有业务逻辑并更新视图。该模型只是JPA entities 的集合。
问题是,谁负责访问数据库和检索模型?
我的第一个想法是,这是演示者的责任。但是,假设在多个页面中需要相同的业务逻辑,例如,验证用户是否有权访问某些内容。在这种情况下,业务逻辑会出现在几个 Presenter 类中,这是不好的。
最好的实现是什么?
【问题讨论】:
标签:
java
design-patterns
mvp
【解决方案1】:
您似乎对MVP 和MVC 之间的区别感兴趣。请注意,MVP 是经典 MVC 架构的新变体,主要区别在于访问模型的人员(参见 Wikipedia 文章中的不同图表)。
在经典的 MVC 模式中,View 和 Controller 都可以访问模型,而在 MVP 中只有 Presenter 可以访问。另请注意,在 MVP 中,并非所有业务逻辑都必须位于 Presenter 中。来自 Wikipedia,“视图中允许的逻辑程度因不同的实现而异……视图……可能是处理特定交互或命令的最佳位置。”
您的第二个问题的答案当然是“这取决于您正在实施什么”。如果您认为 MVP 会导致特定应用程序的 Presenter 中出现重复的逻辑,请考虑将一些逻辑移至 View,或考虑切换到 MVC 模式。