Java 入門指南 V2.00 - 單元 20 - MVC 模式與新增專案




軟體工程中有所謂的 MVC 模式 (Model-View-Controller) , M 就是我們發展好的 Encrypt 類別 (class) ,而 V 就是使用者介面 (user interface) ,至於 C 則是控制 M 與 V 之間的物件 (object) ,三者在物件導向 (object-oriented) 觀念裡都應該是獨立個別的物件



當然可以完全從頭到尾手動自己刻程式碼,倒是規模小的程式裡容易把 V 跟 C 混在一起,或是 M 、 V 、 C 都湊合定義在同一個類別,並不是不可以,但我們不鼓勵這麼做,主要因為在發展大型程式的時候, M 、 V 、 C 任何一部分有問題,或是需要除錯都可以分開進行。


怎麼說呢?想像開發好的 M 、 V 、 C 的程式碼都超過 300 行,如果都混在同一個類別裡,那個類別的實作檔案可能有超過 1000 行程式碼,如果一個地方有問題,最怕是語意錯誤 (semantic error),就得仔細檢查超過 1000 行的程式碼,慢慢找錯誤出來,幸運一點就都是自己寫的,還比較容易找錯誤。


可是實際上一個大型軟體動輒都是數十萬到數百萬行程式碼,而且很多都是自己加入某個開發專案,這麼一來,如果這個專案是個古老的舊專案,完全沒有用軟體工程 (software engineering) 研究出來的方式維護程式碼,那真的要除掉一個 bug 得耗費許多心力。


因此學習開發軟體不外就先建立 MVC 開發模式的觀念囉! JavaFX Scene Builder 提供視覺化的方式設計圖形使用者介面 (graphical user interface) ,這是利用 FXML 進行視窗元件的編排,編輯 .fxml 檔案就會編譯成實際的執行檔,這也就是 MVC 模式中 V 的部份。


FXML 屬於 XML 的一種格式化標記語言。

同時 NetBeans 會建立一個 Controller 類別,藉由這個視窗類別控制圖形介面與使用者與 M 的互動,也就是 GUI 中的事件處理 (event handling) , MVC 模式中 C 的部份。好了,這樣的開發概念是不是很簡單呢?簡單分成下列三個步驟


  • 建立專案
  • 設計使用者介面
  • 設定事件處理

首先要來建立新專案,點擊工具列的〔New Project〕按鈕



就會出現 New Project 視窗,選擇 Categories 中 JavaFX 的 JavaFX Application



最後點擊下方的〔Next〕按鈕



接著出現 New JavaFX Application 視窗



我們將專案名稱改成 Encryptor ,後點擊下方的〔Finish〕按鈕



這樣就建立好新專案了,預設有 Encryptor.javaFXMLDocument.fxmlFXMLDocumentController.java 三個檔案



下面我們逐一將 FXMLDocument.fxmlFXMLDocumentController.java 更改檔案名稱,先將滑鼠游標移到 FXMLDocument.fxml 上按滑鼠右鍵,就會出現快顯選單,然後點擊〔Rename〕按鈕



接著就會出現 Rename 視窗,這裡將檔名改成 EncryptorFXML ,最後點擊〔OK〕按鈕



至於修改 FXMLDocumentController.java 的檔案名稱比較麻煩一點,要從快顯功能表中的〔Refactor〕找到〔Rename〕



點擊這個選項就會出現修改檔名的視窗,這裡將檔名改成 EncryptorController ,然後點擊〔Refactor〕



這樣檔名的修改完成了



下個單元我們來仔細看看這幾個檔案的程式碼囉!


中英文術語對照


MVC 模式Model-View-Controller
類別class
使用者介面user interface
物件object
物件導向object-oriented
語意錯誤semantic error
軟體工程software engineering
圖形使用者介面graphical user interface
事件處理event handling

重點整理


  1. MVC 模式是分成資料模型、使用者介面及兩者間控制三個部分,在物件導向程式設計中,三個部分各是獨立的物件。
  2. JavaFX Scene Builder 可直接以視覺化的方式編輯 FXML 文件,這也是 JavaFX 設計圖形使用者介面的地方。
  3. 利用 NetBeans 開發 JavaFX 專案,簡單分成建立專案、設計使用者介面、設定事件處理三個步驟。


問題與討論


  1. 什麼是 MVC 模式?為什麼要用 MVC 模式開發軟體?
  2. 利用 NetBeans 開發 JavaFX 專案分成哪幾個步驟?

the end

沒有留言: