(待修改,未稳定)
一、PureMVC概述
PureMVC是开源的MVC框架。
PureMVC最先用AS3实现(以下均指AS3版),
库、demo和源代码下载在(见右面的download链接):
http://trac.puremvc.org/PureMVC_AS3/
PureMVC分两个版本:
Standard version(标准版):使用Facade单实例维护proxy, mediator和command的所有缓存。
MultiCore version(多核版):使用多例的方式维护标准版四个角色各自的单实例。
所谓四个角色,就是Facade(外观)、Model(模型)、View(视图)、Controller(控制器)。
后三者的首字母合起来就是MVC(模型-视图-控制器)模式。
除了FMVC外、PureMVC还实现一种类似于AS3事件机制的通知系统。
通知不是用Event类实现。
不是使用addEventListener,而是用对象注册的方式。
不是使用dispatchEvent,而是用sendNotification对MVC核心发送通知。
所以PureMVC框架能有效减弱视图与视图之间,视图与MVC内核之间的强耦合。
二、PureMVC用户代码和核心代码的公共依赖类和接口(合计24个)
1. PureMVC的用户代码可能会依赖于以下类和接口。
(注意,用户方只有INotification,而没有Notification的概念。
另外接口类的命名统一使用I开头)
(1)全局部分:
org.puremvc.as3.patterns.facade
org.puremvc.as3.interfaces.IFacade
外观(facade是法语词汇)。单实例。提供访问PureMVC核心的唯一途径。
它是使用PureMVC解耦机制的唯一手段(当然还需要下面类和接口)
(2)视图部分:
org.puremvc.as3.patterns.mediator.Mediator
org.puremvc.as3.interfaces.IMediator
中介。
(3)控制器部分:
org.puremvc.as3.interfaces.INotification
通知。
org.puremvc.as3.patterns.command.SimpleCommand
org.puremvc.as3.interfaces.ICommand
命令。
org.puremvc.as3.patterns.command.MacroCommand
宏命令。
org.puremvc.as3.patterns.command.AsyncCommand
org.puremvc.as3.interfaces.IAsyncCommand
异步命令。
注意IAsyncCommand大多时候用在PureMVC的核心代码中,不需要用户代码实现。
org.puremvc.as3.patterns.command.AsyncMacroCommand
异步宏命令。
(4)模型部分:
org.puremvc.as3.patterns.proxy.Proxy
org.puremvc.as3.interfaces.IProxy
代理。
2. 除以上外,PureMVC的核心代码依赖于以下类和接口。
注意,下面的类都是程序员不需要关心的(除非看调试堆栈)
(1)控制器部分:
org.puremvc.as3.core.Controller
org.puremvc.as3.interfaces.IController
控制器。单实例。
(org.puremvc.as3.interfaces.IAsyncCommand)
(多数用于核心代码,由AsyncCommand实现)
(2)模型部分:
org.puremvc.as3.core.Model
org.puremvc.as3.interfaces.IModel
模型。单实例。
(3)视图部分
org.puremvc.as3.core.View
org.puremvc.as3.interfaces.IView
视图。单实例。
org.puremvc.as3.patterns.observer.Notifier
org.puremvc.as3.interfaces.INotifier
通知者,Mediator的基类。
org.puremvc.as3.patterns.observer.Observer
org.puremvc.as3.core.IObserver
观察者。由View(视图单实例)和Controller(控制器单实例)创建和使用。
目的是保存和访问IMediator的handleNotification方法。
org.puremvc.as3.patterns.observer.Notification
通知的实现。不会出现在用户代码中。
(待补充)
更新日志:
2011-02-18 修改INotifier和Notifier的名字空间(搞错了,写成多核版)