论坛首页 移动开发技术论坛

SmartTicket代码阅读笔记(三)

浏览 3289 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-01-11  
   前两篇主要描述了我学习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;
现在,整个系统的架构渐渐清晰,如下所示:
  • 大小: 56.7 KB
论坛首页 移动开发技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics