SmartTicket代碼閱讀筆記(三)

   前兩篇主要描述了我學習smart ticket的Model部分的過程,總體感受是,使用了很多的設計模式(Facade,Adapter,Proxy,職責鏈)。在我自己的代碼中,一般沒有考慮過這麼多模式的使用。
   我記得在一篇帖子中,robbin曾將設計模式和圍棋的定式做了比較,我雖然不懂得“定式”,原來也翻看過《建築的永恆之道》這本書,我想,設計模式也就是經過軟件開發者長期摸索而推出的解決普遍問題的通用方式吧。
   就拿建築來說,我生活的13朝古都西安城就有很多古代建築,比較著名的唐朝建築--大雁塔,明朝建築--鐘樓,明代城牆等等,只要留心就會發現,每個朝代的建築物其實都有自己的“個性”,例如唐代建築的屋檐和檐頂的勾角就很有特色,所有唐代的建築彷彿都在遵循一樣的風格;這就好比軟件上的設計模式,如果大家遵循一種設計上比較成熟的方式,就能夠滿足易於擴展、擁抱變化等好處。
   總之,別人好的設計經驗,是需要我不斷去學習的。

   在smart ticket中,View和Controller的設計還是必要容易理解的。
   UIController類充當了一個大大的控制器。說它是大大的,是因爲所有和View控制相關的功能都在這一個類中完成。(隨後我應該分析一個有多個Controller的程序)
   View是由
java 代碼
 
  1. private Alert alert;  
  2. private MainMenuUI mainMenuUI;  
  3. private MySettingsUI mySettingsUI;  
  4. private ManageTheaterSchedulesUI manageTheaterSchedulesUI;  
  5. private DefaultsUI defaultsUI;  
  6. private AccountSetupUI accountSetupUI;  
  7. private ChooseMovieUI chooseMovieUI;  
  8. private SeatingPlanUI seatingPlanUI;  
  9. private SignOnUI signOnUI;  
  10. private PurchaseTicketsUI purchaseTicketsUI;  
  11. private ConfirmTicketUI confirmTicketUI;  
  12. private PurchaseCompleteUI purchaseCompleteUI;  
  13. private AccountInfoUI accountInfoUI;  
  14. private ChangePasswordUI changePasswordUI;  
  15. private BillingInfoUI billingInfoUI;  
  16. private ProgressObserverUI progressObserverUI;  
  17. private RateMyMoviesUI rateMyMoviesUI;  
  18. private SyncMovieRatingsUI syncMovieRatingsUI;  

所組成的。其中每一個View的設計都比較簡單。

Ok,現在從頭走一編
  1. 先啓動SmartTicketMIDlet,SmartTicketMIDlet啓動model和初始化controller;
  2. 在初始化UIController的過程中(init方法),View一一被實例化,並且根據accountInfo的情況分別進入AccountSetupUI或者MainMenuUI;
現在,整個系統的架構漸漸清晰,如下所示:
發佈了0 篇原創文章 · 獲贊 2 · 訪問量 3170
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章