puremvc
PureMVC部分:
View和controller都是通过注册观察者的方式来实现事件传递的
- 观察者:Observer:,实例化它时,传入一个处理通知Inotiferion的委托就可以了;
- Controller命令模式:注册命令时,其实注册了一个观察者,这个观察者引用了这个命令的excute方法来执行通知事件;
- command:Excute()是来用执行事件通知的方法
- View层:可以注册中介者Mediator,中介者引用着具体的UI实体对象,来负责UI的对外交互,UI对象本身不参与逻辑
- Mediator:引用着UI对象,并且声明了自己对哪些通知事件感兴趣,由ListnotificationInterests()这个方法返回的list<’string”>对象来实现.Midiator也有处理通知的方法。注册中介者时,View层会根据list中的事件名称,实例化一个观察者,观察者利用中介者处理事件的方法来处理这个通知事件。
- Model层:可以注册代理Proxy,proxy是用来执行数据的相关操作的
- proxy:代理数据的相关逻辑,继承了Notifier,所以可以发出通知,执行相应的事件,其中的Object data就是所操作的数据实体类,proxy可以从网络上更新数据也可以通过对外的接口来更新数据,也可以当数据更新时发出通知事件
- Service:这个还没有深入看,目前来看,是用来处理网络消息的一个类
外观模式
以上部分都是MVC三个具体的功能细节,外观Facade统一了这些功能,对外开放。>
- 首先,Facade引用着上述三个MVC层的单例
- 承继了Inotifier接口 ,可以发起事件的通知
- 对应Mediator,Proxy,Command,handler,用V M C Service中对应的方法来实现,注册,移除,判断等功能
实现了INotifier的类,都可以发送通知,实现这个功能的类有:Ifacade,Notifier,所有的命令Command类,代理proxy类,中介者Midiator。
使用框架的步骤
- Program
- ProgramEntry,是Program的子类
- 实例化了facade的APPlicationFacade对象
- 启动了Facade的StartUp()方法,这个方法是框架的启动开始点。
- ApplicationFacade,继承了Facade类,是外观模式的具体实现类
- 在StartUp方法里,注册第一个命令:START_UP命令,写一个Command的类,来注册这个事件,来执行开始的逻辑。
- NotificationType:方便我们记录用到的事件名称的字符串,这个用到了partial来修饰这个类,不同类型的事件,放到不同的文件里写
- 事件通知的方式
- 所有的事件,都是通过构造观察者来实现监听的
- INotifier接口,定义了发送通知的方法
- 所有实现该接口的类,都有可以发送事件通知的方法,但底层调用的是Facade中的方法来实现具体细节的
- 而Facade发送通知的方法SendNotification(),底层调用的是Observers的NotifyObservers(),方法,可以这么说,Observers是最底层实现发送通知的方法,但我们可以不知道这个细节,我们只需要知道SendNotification()即可
- SendNotification()有三种重载,可以自已查看一下,方法内部会自动构造对应的通知Notification来做为数据进行传递
- INotification接口定义了通知时要传送的数据的格式,事件名称,事件数据,还有一个Type类型的参数
- 每个注册监听了事件的观察者,根据自己的需求,来处理通知事件 -
相关阅读
前言:有一段时间没写博客了, "持之以恒"徽章都暗了, 实在不该。 前一段确实比较忙, ...小小地给自己的懒找个借口吧。 大二即将结
解析XML(一) 在进行XML文件的解析之前,我们简单介绍下什么是XML,以及XML在企业中有哪些作用。(本文建立在不使用数据库的前提之下,如
淘宝退款是淘宝交易中经常有的事情,如果买家退款,淘宝金币会不会退回呢?有人问淘宝退款淘金币会退吗?针对这两个问题,小编从两方面跟
在本文中,笔者重点介绍他的一些发现和社交媒体策略,帮助营销人员通过B2B营销“漏斗”,以各种渠道找到正确的受众,分享经验
原文地址为:【原】115网盘下载地址解析工具(暂停更新)115网盘的优点不必多说,跨运营商多线路、无须下载工具即可高速下载、直接下载地