pureMVC架构解析

来源:互联网 发布:声音好听的网络女歌手 编辑:程序博客网 时间:2024/04/28 05:12
  1. 了解调用的过程:
  • 接口是各个类的基础,类都可以追溯到接口上面,如view继承自IView接口;
  • Notifier,notification,observer三个类是整个框架的基础,分别为通知发送者,通知本身,通知观察者,meadiator,command,proxy都是继承自notifier类,可以用父类notifier的方法sendNotification(),此处有要注意的地方,Notifier是怎么sendNotification的呢? 他调的是facade 的sendNotification方法,而facade的此方法中直接调用view的notifyobserver方法,通知observer,observer调用相应的方法,从而实现整个通知的过程;
  • 在view中维护observerMap,notification 到来时通过notifyObserver调用相应的处理函数;
  • 注意各个类的instance,均为静态static类型,所以,无论在哪里调用只要通过getinstance调用相应的instance,都能得到本架构中此类的独一的instance,也就是说此类的属性等都只有独一份。如在controller中,调用view的方法registerObserver,就是调用了view的getinstance,得到view的静态jinstance引用;
  • 在register各个部分的时候,也就完成了初始化,如registerProxy的时候传入的参数为New proxy(),故各个部分都是有状态的;
  • mediator,proxy,command的发送通知,通过继承的notifier的sendnotification,而notifier通过调用view的notifyobserver方法;
  • mediator和command接受信息其实是在view中,view维护了一份observerMap,sendnotification过来时,通过调view的notifyObserver直接调用了函数,相当于模拟了接收信息的过程;

 

     2. 了解从facade建立到执行的类互相调用关系:

  • 建立applicationFacade extends facade,facade初始化的时候初始化view,model,controller(此三者的instance是独一份,故可以看成为全局的),initcommand通过调用controller的registercommand,而此applicationFacade的sendnotification方法通过调用view的notifyobserver直接通知观察者;
  • sendnotification(startup),facade.registerCommand中注册了command,而此时也相应的更新了observer存储相应的观察者和操作,故startup notification通知command startup执行;
  • command startup中在分别注册proxy,mediator,注册时完成了new proxy,和new mediator,二者分别开始执行构造函数中的代码;
  • 如果proxy中有数据进入,则通过继承notifier的sendnotification发送通知(notifier利用view的notifyobserber方法);
  • 如果mediator更新,需要传出notification,则通过notifier的sendnotification方式(notifier利用view的notifyobserber方法);