Command 对象是无状态的,只在需要时才被创建。Command 可以获取 Proxy 对象并与之交互,发送 Notification,执行其他的 Command。经常用于复杂的或系统范围的操作,如应用程序的“启动”和“关闭”。应用程序的业务逻辑应该在这里实现。
除了基本的对象结构以外,为了解耦合,PureMVC 框架中引入了事件机制,这是个非常简单观察者设计模式,所有的事件都是一个 Notification,不同对象之间通过 Notification 来同步操作和交换信息。例如如果想更新界面中某个 Mediator,首先我们定义 Notification 用于此目的,然后注册 Mediator 该 Notification,然后就可以在程序中任何地方生成一个 Notification,通过事件机制,Mediator 就会接收到 Notification,然后更新需要的部分。整个过程 Mediator 只和 Notification 有关,没有其他依赖,有效的降低了对象之间的依赖程度。
介绍完 PureMVC 的基本结构和事件模型,我们来看看一个典型的 PureMVC 应用如何构造。首先实际的应用程序都有一个 Façade 子类,这个 Façade 类对象负责初始化 Controller(控制器),建立 Command 与 Notification 名之间的映射,并执行一个 Command 注册所有的 Model 和 View,一旦初始化的工作做完,对象之间的关系建立好以后,应用程序就可以正常运行了。
PureMVC Java 版本的基本结构
首先我们看看 PureMVC Java 标准的核心类图,如图 2 所示:
图 2. Java 版本主类图

核心类的实现完全体现了框架的设计意图,由 IController、IView 和 IModel 三个接口来规范 MVC 三种角色的行为,同时又提供了三个默认的实现类。
然后我们在看看辅助性类的类图:
图 3. Java 版本辅助类图

(查看图 3 的清晰版本。)
从中可以看出 IFaçade 是整个程序的入口和负责管理所有对象的类,其中可以注册 proxy、command 和 Mediator,通过 IFaçade 的子类,系统的各种资源得到统一管理和调度。
然后可以看到 INotification 是整个事件驱动模型的核心类,通过事件模型,整个应用程序的各个部分的耦合度变得非常低,同时用户可以自定义 INotification 的子类,从而实现最大的可定制性。
PureMVC 样例程序 —— 用户登陆
图 4. 主界面

当用户填写正确的用户名和密码的时候,就显示登陆成功的消息:
图 5. 登陆成功

当用户填写错误的用户名和密码的时候,就显示登陆不成功的消息:
图 6. 登陆失败

首先,我们来看看程序的入口代码,即 main 函数所在的类 LoginFacade,这个类是 Façade 的子类,同时继承了 IFacade 接口。
清单 1. LoginFacade.java 的源码
LoginFacade 覆盖父类的三个初始化方法:initializeController、initializeModel 和 initializeView,作为单例,通过父类的构造函数分别调用了这三个函数,从而完成初始化工作。三个函数也很简单,只是在 initializeController 中注册所有的 Command 类,在 initializeModel 中注册所有的 Proxy 类,在 initializeView 中注册所有 Mediator 类。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-21515-2.html
打死一些男人更靠谱
我的5代升级了9系统很流畅
他的声音真的很棒
就像你在放屁一样