假設我有一個像Student這樣的實體,並且使用MVC模式,我在我的項目中創建了一個學生模型。但是在某些時候,當我創建一個表時,我獲得了另一個實體的外鍵。 (一對多關係 - 學生借書) 因此,當我創建Book Model時,必須將外鍵作爲Book類的一個屬性。那麼它違反了MVC模式? 請幫忙。 如何使用MVC實現這一點?MVC模式中的模型和實體有什麼區別?
回答
不,它不違反MVC。
根據定義,MVC中的「Model」表示應用程序中數據的邏輯表示。建立實體關係(在你的情況下,學生和書)是一種代表學生信息的方式。
說,我正在「學校圖書館」上構建一個Web應用程序。
- 實體(學生和書)關係將是「模型」的所有部分。
- 現在,有一個門戶網站(或簡單的網頁),學生可以檢查他借來的圖書,是一個「視圖」。
- 連接模型和視圖的類(編寫爲從模型中獲取數據並渲染它的視圖)寫在「控制器」中。
檢查Web框架,如Django,Laravel。他們遵循MVC範式來構建複雜的Web應用程序。
希望它有幫助。
因此,如果我在BookModel.java類中包含Student的String id,這不會是一個問題?可以在模型類中包含另一個模型作爲屬性嗎? – Parker
它絕對不會違反所述的模型。書中沒有「外鍵」。 –
@Parker,模型應該反映它描述的世界。一本書有一個學生,還是一個學生有書? –
讓我們來備份吧。 「MVC」是「Model-View-Controller」;三者中的每一個都是不同的部分。模型是你的問題的主題,是描述你程序世界的部分。該模型包含您的問題空間的名詞,形容詞和動詞,或「話語領域」。只能使用屬於該域的名詞,形容詞和動詞。代表演員或實體(名詞)及其屬性(名詞和形容詞)和行爲(動詞)的領域相關類型的結構就是您的模型。
在您的域名中,您提到了兩個名詞和一個動詞。 「學生借書」。現在我從來沒有見過一個擁有外鍵的學生。 (除非是他們交換學生女朋友的公寓。)也不是一本書。所以「外鍵」不是模型的一部分。
這裏的一個模型:
public interface Person {
String getName();
}
public interface Borrower<T> {
void borrow(T thing);
}
public interface Replacer<T> {
void replace (T thing);
}
public class Student implements Person,
Borrower<Book>, Replacer<Book> {
private final Set<Book> bookshelf = new HashSet<>();
public Collection<Book> getBookshelf() {
return Collections.unmodifiableSet(bookshelf);
}
// more implementation
}
我故意分解模型爲單抽象方法(SAM)的接口。但是,Person
界面通常不是典型的界面。動作方法,諸如「借用」和「替換」等傳遞動詞應該是SAM接口,部分是爲了支持lambda表達式,部分是爲了保持模型的清晰和簡單。
- 1. MVC模型1和模型2有什麼區別?
- 2. ASP.net實例模式有什麼區別?
- 3. ASP和SaaS模型有什麼區別?
- 4. DAO和DP模式有什麼區別?
- 5. 「::」和「sys」模式有什麼區別?
- 6. Factory和Strategy模式有什麼區別?
- 7. Oracle和Microsoft模式有什麼區別?
- 8. Web和桌面上的MVC模式有什麼區別?
- 9. MVC模型,數據和數據庫有什麼區別?
- 10. 數據模型和對象模型有什麼區別?
- 11. Rails - 測試模型和應用模型有什麼區別?
- 12. 領域模型和概念模型之間有什麼區別
- 13. $!模型和!$模型在速度上有什麼區別嗎?
- 14. Ember.js:對象模型和模型有什麼區別?
- 15. 合成模型和平均模型有什麼區別?
- 16. Page Controller和mvc模式有什麼區別?
- 17. 什麼是MVC模式中的「模型」?
- 18. Python中的「Actor模型」和「Reactor模式」之間有什麼區別?
- 19. 享元模式和對象池模式有什麼區別?
- 20. 設計模式和架構模式有什麼區別?
- 21. 開發模式和生產模式有什麼區別?
- 22. wsdl模式和非wsdl模式Web服務有什麼區別?
- 23. IE11兼容模式和IE10兼容模式有什麼區別
- 24. 睡眠模式和深度睡眠模式有什麼區別?
- 25. MD5二進制模式和文本模式有什麼區別?
- 26. 小內存模式和大內存模式有什麼區別?
- 27. Builder模式和Flyweight模式有什麼區別?
- 28. 模塊中@和@@有什麼區別?
- 29. sql表適配器和實體框架模型有什麼區別?
- 30. 十進制格式中的#。##和##。##模式有什麼區別?
不包括外鍵作爲屬性不違反MVC模式。術語實體通常在創建實體關係圖時出現。模型是MVC中的M.在你的例子中,學生會參考一個實體,如果你遵循MVC實現,你也會有一個模型。 –