我記得在一篇帖子中,robbin曾將設計模式和圍棋的定式做了比較,我雖然不懂得“定式”,原來也翻看過《建築的永恆之道》這本書,我想,設計模式也就是經過軟件開發者長期摸索而推出的解決普遍問題的通用方式吧。
就拿建築來說,我生活的13朝古都西安城就有很多古代建築,比較著名的唐朝建築--大雁塔,明朝建築--鐘樓,明代城牆等等,只要留心就會發現,每個朝代的建築物其實都有自己的“個性”,例如唐代建築的屋檐和檐頂的勾角就很有特色,所有唐代的建築彷彿都在遵循一樣的風格;這就好比軟件上的設計模式,如果大家遵循一種設計上比較成熟的方式,就能夠滿足易於擴展、擁抱變化等好處。
總之,別人好的設計經驗,是需要我不斷去學習的。
在smart ticket中,View和Controller的設計還是必要容易理解的。
UIController類充當了一個大大的控制器。說它是大大的,是因爲所有和View控制相關的功能都在這一個類中完成。(隨後我應該分析一個有多個Controller的程序)
View是由
- private Alert alert;
- private MainMenuUI mainMenuUI;
- private MySettingsUI mySettingsUI;
- private ManageTheaterSchedulesUI manageTheaterSchedulesUI;
- private DefaultsUI defaultsUI;
- private AccountSetupUI accountSetupUI;
- private ChooseMovieUI chooseMovieUI;
- private SeatingPlanUI seatingPlanUI;
- private SignOnUI signOnUI;
- private PurchaseTicketsUI purchaseTicketsUI;
- private ConfirmTicketUI confirmTicketUI;
- private PurchaseCompleteUI purchaseCompleteUI;
- private AccountInfoUI accountInfoUI;
- private ChangePasswordUI changePasswordUI;
- private BillingInfoUI billingInfoUI;
- private ProgressObserverUI progressObserverUI;
- private RateMyMoviesUI rateMyMoviesUI;
- private SyncMovieRatingsUI syncMovieRatingsUI;
所組成的。其中每一個View的設計都比較簡單。
Ok,現在從頭走一編
- 先啓動SmartTicketMIDlet,SmartTicketMIDlet啓動model和初始化controller;
- 在初始化UIController的過程中(init方法),View一一被實例化,並且根據accountInfo的情況分別進入AccountSetupUI或者MainMenuUI;