PureMVC学习笔记之基础概念

来源:互联网 发布:java的游戏引擎 编辑:程序博客网 时间:2024/05/19 02:25

首先看看两者的区别:

MVC:Mode、View、Controller

PureMVC:MVC、Proxy、Mediator、Command、Facade


接着小心推敲各自的职责:

Model、Proxy:

        Model保存对Proxy对象的引用,Proxy负责操作数据模型,与远程服务通信存取数据。(这样保证了Model层的可移植性)


View、Mediator:

        View保存对Mediator对象的引用。由Mediator对象来操作具体的视图组件(例如DataGrid组件),包括:添加监听、发送或接收Notification,改变视图组件的状态。


Controller、Command:

        Controller保存所有Command的映射。Command类是无状态的,只在需要时才被创建。

        Command可以获取Proxy对象并与之交互,发送Notification,执行其他的Command。例如应用程序的“启动”和“关闭”。


Facade:

        单例,负责初始化核心层(Model、View和Controller),并能访问他们的Public方法。

        (1)、负责初始化Controller,建立Command与Notification之间的映射。

        (2)、执行一个Command,注册所有的Mode和View

        (3)、将Mode、View和Controller对象的引用保存在自己的成员变量。



通信方式:

PureMVC通信:

        不采用flash的事件响应,而是使用观察者模式来通信。


实际被我们使用的:

Notification:

        Facade保存了Command与Notification之间的映射。当Notification被发出时,对应的Command会自动地由Controller执行。


Mediator:(发送、声明、接收Notification)

        当用View注册Mediator时,Mediator的listNotifications方法会被调用,以数组形式返回该Mediator对象所关心的所有Notification。

        之后,当系统其它角色发出同名的Notification时,关系这个通知的Mediator都会调用handleNotification方法,并将Notification以参数传递到方法。


Proxy:(发送,但不接收Notification)

        例如,Proxy从服务器收到数据时,发送Notification到系统。当Proxy的数据被更新时,发送Notification到系统。

        View和Controller监听Proxy发送的Notification。用户通过界面(view)与数据(Proxy)交互。

        对外公布操作数据对象的API。封装了所有对数据模型的操作。



有这些命令:

SimpleCommand:

        只有一个execute方法,仅接受一个Inotification实例作为参数。

MacroCommand:

        可以执行多个Command。每个执行都会创建一个Command对象并传参一个对源Notification的引用。

        它在构造方法中调用自身的initializeMacroCommand方法。只需要重写这个方法,调用addSubCommand添加子Command。

        也可以任意组合Simple和Macro成为一个新的Command。



原创粉丝点击