在设计模式Model-View-Controller(MVC)中,后端数据库是Model层的一部分,还是与Model分离?
此外,是否可以说 MySQL 数据库不是 Model 的一部分,因为它与 Java 代码分开放置?
在设计模式Model-View-Controller(MVC)中,后端数据库是Model层的一部分,还是与Model分离?
此外,是否可以说 MySQL 数据库不是 Model 的一部分,因为它与 Java 代码分开放置?
数据库是持久化的,而不是真正的 MVC 模式的一部分(尽管将模型状态持久化到数据库是很常见的)。
Wikipedia将模型定义为“表示应用程序状态的域对象或数据结构。 ”考虑到这一点,我们可以看到虽然数据库不是严格的代码库的一部分,但它仍然表示(保存)使用的数据,并且因此(至少在某种程度上)是模型的一部分。如果您尝试考虑为什么它不会成为控制器或视图的一部分(两者都应该与模型一起使用,而不是直接单独使用),则更容易看到这一点。
现在,就像@John Doe 发布的图片一样,您会看到为了保留 MVC 结构,您需要通过模型提供到数据库的接口。
作为一个过度简化的示例,您可以考虑编写如下内容:
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 更加灵活。
我希望我有所帮助!:)