2012-05-22 33 views
1

在設計模式模型 - 視圖 - 控制器(MVC)中,後端數據庫是模型層的一部分,還是與模型?模型 - 視圖 - 控制器中的後端,Java

此外,可以說MySQL數據庫不是Model的一部分,因爲它與Java代碼分開放置?

+1

看看這些圖片:http://netbeans.org/images_www/articles/69/javaee/ecommerce/design/mvc-diagram.png和http://upload.wikimedia.org/wikipedia/commons/ 3/3E/MVC_Diagram_3.jpg –

回答

0

Wikipedia定義模型「代表應用程序的狀態域對象或數據結構。」有了這一點,我們可以看到,雖然數據庫是不是代碼庫的嚴格組成部分,但它仍然代表(保存)使用的數據,因此(至少在某種程度上)是模型的一部分。如果您試圖考慮爲什麼它不會成爲控制器或視圖的一部分(這兩者都應該與模型配合使用,而不是直接使用它們),則更容易看到此問題。

現在,圖片@John Doe發佈,你會發現在oder保存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,它可以使控制器和查看更靈活得多。

我希望我能幫上忙! :)

0

數據庫是持久性,而不是直接的MVC模式的一部分(儘管通常將模型狀態持久化到數據庫)。