“嗨,阿米戈!”

“嗨,比拉博!”

“你已經是一個紮實的程序員了。所以,今天我們要上一節MVC課。”

“MVC 代表模型視圖控制器。它是一種用於大型應用程序的架構設計模式,其中應用程序分為三個部分。”

“第一部分包含應用程序的所有業務邏輯。這部分稱為模型它包含執行創建應用程序要執行的所有操作的代碼。這部分對其他部分的依賴最少。”

“第二部分包含與向用戶顯示數據有關的所有內容。這部分稱為視圖。它包含控制顯示窗口、頁面、消息等的代碼。”

“第三部分包含處理用戶操作的代碼。任何旨在改變模型的用戶操作都應該在這里處理。這部分稱為控制器  

“這種方法允許您獨立創建三樣東西: 程序的邏輯(模型)向用戶顯示程序數據的機制(視圖)以及用戶輸入/操作的處理程序(控制器)。”

“應用程序經常有多個視圖。這很正常。您可以在 Excel 中查看與數字和圖表完全相同的數據。在遊戲中,您可以從第一人稱、第三人稱或地圖視圖以及許多其他視圖查看事件. 所有這些都是對單個模型的不同視圖

“決定響應用戶操作在模型中更改什麼的所有代碼都被收集到控制器中例如,如果用戶決定關閉程序,那麼您需要將模型的數據保存到磁盤上的文件中。或者,如果用戶輸入了新數據,則需要將其添加到模型中。然後模型會通知所有視圖有關數據更改的信息,因此它們只顯示數據的當前狀態。”

“再說一次。”

“從 Java 開發人員的角度來看,我們可以說模型、視圖和控制器是三組類,其中:”

a) 每個部分都有自己的目的;”

" b) 單個組的類之間的關係非常強;"

" c) 群體之間的關係非常薄弱;"

" d) 各部分相互通信的方式受到嚴格監管。"

“這是另一種描述方式:

MVC-1

“模型是系統中最獨立的部分。它不依賴於視圖或控制器。模型不能使用視圖或控制器組中的類(!)。”

“視圖的主要限制是它不能更改模型。視圖類可以訪問模型以獲取數據或訂閱事件,但視圖類不能更改模型。”

“控制器的主要限制是它不顯示數據。控制器處理用戶操作並相應地修改模型。”

“但我為什麼需要這個?”

“你現在不使用這個事實,並不意味著你在不久的將來不會使用它。你在這裡學習是為了找工作。即使這些知識在一段時間內沒有用學習,工作的時候肯定能派上用場。”

“畢竟,真正的項目和麵試還在等著你……”

“我們現在在這裡聊天,但也許一個月後你就會開始工作了。”

“你說得很對,比拉博。我會認真聽你說的。”

“MVC 模式在應用程序架構中非常常見。你需要了解它,這樣你才不會突然開始向模型添加視圖類,因為你覺得那樣更方便。”

“任何項目中最重要的是它的架構。 你在這個階段的任務與其說是能夠創建一個好的架構,不如說是學會理解別人的架構。你仍然需要成長為一個在你創建自己的之前幾年。但你需要了解其他人創造了什麼。馬上。”

“當應用程序使用標準架構時,一切都變得更加清晰。通過了解架構,您可以知道事物的位置,一切如何交互,程序大致如何工作,在哪裡添加需要的類以及在哪裡尋找原因一個錯誤。”

“但是,如果你不熟悉建築的標準方法,那麼即使是最好的建築也不會告訴你任何事情。你會像中世紀的農民一樣看著一輛新車。一輛標準的汽車。”

“我明白了。謝謝你有趣的課,Bilaabo。”

“最後,這是一個你絕對應該查看的好鏈接:”

鏈接到其他材料