在设计模式Model-View-Controller(MVC)中,后端数据库是Model层的一部分,还是与Model分开?
此外可以说MySQL数据库不是Model的一部分,因为它与Java代码分开放置?
答案 0 :(得分:0)
Wikipedia将模型定义为“表示应用程序状态的域对象或数据结构。”我们可以看到,虽然数据库不是严格的一部分在代码库中,它仍然代表(保存)使用的数据,因此(至少在某种程度上)是模型的一部分。如果你试图考虑为什么它不会成为Controller或View的一部分(这两者都应该与模型一起工作而不是直接用于它们),那么更容易看到这一点。)
现在,就像@John Doe发布的图片一样,你会看到为了保留MVC结构,你需要提供一个接口来数据库通过< / em>模特。
作为一个简单的例子,你可以考虑写这样的东西:
public ModelDatabaseWrapper implements ModelReadWriteInterface {
public ModelDatabaseWrapper() {
/* Prepares to use database... */
}
public Object getValue(Object someQuery) throws ModelReadException {
/* Get something from it... */
}
public void putData() throws ModelWriteException {
/* Insert something int to it... */
}
private DataBaseHandle db;
}
这只是一个指导原则,但我强调了制作通用interface
以便根据访问方式对模型组件进行分组的重点。在实际应用中,可以有多种形式的表示数据和数据。超出数据库的状态,因此通过保持一个干净的API,它将使Controller和View更加灵活。
我希望我帮忙! :)
答案 1 :(得分:0)
数据库是持久性的,而不是直接的MVC模式的一部分(尽管将模型状态持久化到数据库是很常见的。)