首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

J2ME 專案實戰:MVC 模式在記事本應用中的完整應用(上)

     編輯:Java 相關知識

MVC 起源與核心思想

MVC(Model-View-Controller)源自 Smalltalk-80,經 MFC「文檔-視圖」模型普及,GoF 設計模式奠定經典地位。核心唯一詞:**分離**。Model 抽象實體、View 呈現介面、Controller 協調雙向互動。變種眾多,但分離思想不變。

MVC 優劣勢權衡

優點缺點
專家分工:資料庫/網路專家做 Model,UI 專家做 View類別膨脹:速效粉般增加類別數量
視圖變更不波及 Model,重構低成本邊界模糊:Model 是螢幕資料還是實體?Controller 職責何在?爭論不斷
Model 高內聚可復用,利於單元測試實作成本高:小專案 ROI 可能為負

J2ME/MIDP 常見 MVC 變體

1. M-V / MC-V / M-VC:螢幕為組織單位

class MyFrame extends Form {
    private Model model;
    private StringItem nameItem;
    MyFrame(Model model) {
        this.model = model;
        nameItem = new StringItem(model.getName());
        append(nameItem);
    }
}
class Model { String name = "M-V"; String getName() { return name; } }
  • 優點:直觀、適合 RAD 工具、有限分離顯示與資料
  • 缺點:鼓勵「從螢幕思考」而非「從業務流程思考」,Controller 職責模糊被 View/Model 吸收

2. Sun Java ME 藍圖 Smart Ticket:巨大 Controller

  • 所有 UI 事件轉發至單一 Controller,內部 switch-case 分派
  • 優點:集中管理 MIDP 頻繁畫面導航
  • 缺點:Controller 膨脹成「上帝類別」,違反單一職責,擴展困難

3. iFeedback:退化封裝單一類別

public abstract class MVCComponent implements CommandListener {
    abstract void initModel(); abstract void createView(); abstract void updateView();
    abstract void commandAction(Command c, Displayable s);
    // 內部封裝 Model/View/Controller 三角色方法
}
  • 動機:極度壓縮類別數量,適應 MIDP 有限資源
  • 代價:犧牲分離優勢,本質為「為了資源妥協的退化形態」

作者習慣架構:標準 UML 映射的嚴格分離

架構圖 類別關係

角色定義與命名慣例

基礎抽象類別

public abstract class BaseView {
    abstract Display getDisplay(); abstract Displayable getScreen();
    abstract void createView(); abstract void updateView();
    abstract BaseController getController();
    
    Displayable prepareScreen() { /* 惰性建立/更新畫面 */ }
    void displayScreen() { /* 安全顯示含錯誤處理 */ }
}

public abstract class BaseController {
    abstract BaseView getView(); abstract void setView(BaseView view);
}
  • 採用抽象類別而非框架基類:強制實作、保留彈性
  • 雙向關聯在建構子中建立:Controller 先建立 → 傳入 View 建構子 → View 回調 setView()

下篇預告

下篇將結合此架構,完整演示 Note 記事本專案的:用例分析、序列圖設計、程式碼結構、畫面流程,提供可直接套用的 MIDP MVC 實戰範本。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
角色UML 對應職責命名尾碼
ViewBoundary 類別畫面呈現、收集輸入、回調 ControllerUI
ControllerControl 類別提供 View 介面、協調 Model、共同負責使用者互動Workflow
ModelEntity 類別實體物件(非螢幕資料集合),高獨立性、可復用Entity / 無
Model 生命週期Entity 類別實體建立/存取/刪除(RMS/資料庫)Locator