雖增加代碼量,但為提升可維護性與擴充性,主流做法將 MIDlet 主類別與 UI 介面分離。
Display 物件:透過建構子傳遞package testmidlet;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class TestMIDlet extends MIDlet {
private static TestMIDlet instance;
private LoginForm displayable;
private Display display;
public TestMIDlet() {
instance = this;
display = Display.getDisplay(this);
displayable = new LoginForm(display);
}
public void startApp() { display.setCurrent(displayable); }
public void pauseApp() {}
public void destroyApp(boolean unconditional) {}
public static void quitApp() {
instance.destroyApp(true);
instance.notifyDestroyed();
instance = null;
}
}
package testmidlet;
import javax.microedition.lcdui.*;
public class LoginForm extends Form implements CommandListener {
private Display display;
public LoginForm(Display display) {
super("Test");
this.display = display;
setCommandListener(this);
addCommand(new Command("Exit", Command.EXIT, 1));
}
public void commandAction(Command command, Displayable displayable) {
if (command.getCommandType() == Command.EXIT) {
TestMIDlet.quitApp();
}
}
}
此模式可延伸為完整 MVC:Model 處理資料/業務邏輯、View (Canvas/Form) 負責繪製/輸入、Controller (MIDlet/Workflow) 協調流程與狀態轉換。