在设计模式“模型-视图-控制器(MVC)”中,后端数据库是模型层的一部分,还是与模型分离?

此外,可以说MySQL数据库不是模型的一部分,因为它与Java代码分开放置了吗?

最佳答案

Wikipedia将模型定义为“代表应用程序状态的域对象或数据结构”。考虑到这一点,我们可以看到,尽管数据库不是严格地属于代码库的一部分,但它仍表示(保存)所使用的数据,因此(至少在某种程度上)是模型的一部分。如果您尝试考虑为什么它不成为Controller或View的一部分(两者都应该与Model一起使用而不是直接独立使用),则更容易看到这一点。

现在,就像在@John Doe发布的图片中一样,您将看到为了保留MVC结构,您需要通过Model提供到数据库的接口。

作为一个过于简化的示例,您可以考虑编写如下内容:

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 and View更加灵活。

希望我能帮上忙! :)

09-30 14:15
查看更多