pureMVC学习之一
//1
var
MainWindow: TMainWindow;
begin
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.CreateForm(TMainWindow, MainWindow);
ApplicationFacade.Startup(MainWindow);
Application.Run;
end.
//2
function ApplicationFacade: IApplicationFacade;
begin
Result := (TApplicationFacade.Instance as IApplicationFacade)
end;
//3
procedure TFacade.InitializeFacade;
begin
InitializeModel;
InitializeController;
InitializeView;
end;
//4 TApplicationFacade 调用父类的注册命令方法
procedure TApplicationFacade.InitializeController();
begin
/// call inherited to use the PureMVC Controller Singleton.
inherited;
/// Otherwise, if you're implmenting your own
/// IController, then instead do:
/// if Assigned(FController) then Exit;
/// FController = MyAppController.getInstance;
/// do any special subclass initialization here
/// such as registering Commands
RegisterCommand(MSG.Startup, TStartupCommand);
RegisterCommand(MSG.DELETE_USER, TDeleteUserCommand);
RegisterCommand(MSG.ADD_ROLE_RESULT, TAddRoleResultCommand);
end;
//5 TFacade 调用控制器注册命令方法
procedure TFacade.RegisterCommand(NotificationName: string;
CommandClass: TClass);
begin
FController.RegisterCommand(NotificationName, CommandClass);
end;
procedure TController.RegisterCommand(NotificationName: string; CommandType: TClass);
begin
Assert(CommandType.InheritsFrom(TCommand));//是否继承自TCommand
TMonitor.Enter(FSyncRoot);
try
if FCommandMap.ContainsKey(NotificationName) then Exit;//注册过的命令则放弃
// This call needs to be monitored carefully. Have to make sure that RegisterObserver
// doesn't call back into the controller, or a dead lock could happen.
FView.RegisterObserver(NotificationName, TObserver.Create('ExecuteCommand', Self));//视图注册观察者,收到此消息时即可调用消息对应的命类的执行方法
FCommandMap.Add(NotificationName, TCommandClass(CommandType));//控制器命令列表中增加新命令
finally
TMonitor.Exit(FSyncRoot);
end;
end;
pureMVC学习之一的更多相关文章
- PureMVC学习笔记
一.简介 PureMVC是基于MVC思想和一些基础设计模式建立的一个轻量级的应用框架,免费开源,最初是执行的ActionScript 3语言使用,现在已经移植到几乎所有主流平台.PureMVC官方网站 ...
- pureMVC介绍及学习
1 简介 Pure MVC是在基于模型.视图和控制器MVC模式建立的一个轻量级的应用框架,这种开源框架是免费的,它最初是执行的ActionScript 3语言使用的Adobe Flex.Flash ...
- 【AS3 Coder】任务七:初涉PureMVC——天气预报功能实现
转自:http://www.iamsevent.com/post/36.html AS3 Coder]任务七:初涉PureMVC——天气预报功能实现 使用框架:AS3任务描述:了解PureMVC框架使 ...
- (转载)puremvc框架之proxy
(转载)http://www.cnblogs.com/yjmyzz/archive/2010/08/01/1789769.html 上一篇 puremvc框架之Command 里,已经学习了如何利用C ...
- 基于HTML5的SLG游戏开发( 三):认识PureMVC
在游戏开发中,对于一般网络游戏,由于需要多人协同开发,每个人负责不同的模块开发,为了减少耦合,需要用来一些MVC框架,减少模块之间的耦合.我们现在使用的mvc框架是pureMVC.pureMVC的官网 ...
- PureMVC(JS版)源码解析(四):Notifier类
上一篇博客中,我们解析了Observer(观察者)类,这一篇博客我们来讲Notifier(通知着)类.关于Notifier类,源码注释上有这么一段: * @class puremvc.Not ...
- pureMVC简单示例及其原理讲解一(开篇)
pureMVC是一个MVC框架,皆在最大限度的减少MVC间的耦合性.本人刚刚接触pureMVC时感到一头雾水,不知从何入手,也不知道从何学习.好在本人有耐性且能看懂英文技术文档,面向对象的编程能力也比 ...
- 实战 PureMVC
最近看PureMVC,在IBM开发者社区发现此文,对PureMVC的讲解清晰简洁,看了可快速入门.另外,<腾讯桌球>游戏的开发者吴秦,也曾进一步剖析PureMVC,可结合看加深理解. 引言 ...
- PureMVC 官方文档翻译(一)
最近在学习PureMVC框架,感觉最权威的还是阅读官方文档,顺便翻译了下全当记笔记了. PureMVC概览 这篇文档他讨论PureMVC框架的类和接口,使用UML来阐述它们的角色.职责和协作. Pur ...
随机推荐
- HDU 1251 统计难题【字典树】
题意:中文题--跟着模板敲的--第一棵字典树--@_@ #include<iostream> #include<cstdio> #include<cstring> ...
- Oracle安装错误ora-00922(zhuan)
Oracle安装错误ora-00922(缺少或无效选项) (2012-03-19 10:49:27) 转载▼ 标签: 杂谈 安装Oracle 11g R2的过程中,在新建数据库实例时出现了该错误, ...
- c#Winform程序,让pictureBox显示图像(包含GIF),并且不被占用,能即时删除图片。
最近在做一个图片浏览的工具, 需要在PictureBox中显示图像文件, 包括gif播放. 且不能被程序独占, 就算winform的程序正在显示这张图, 也能在资源管理器里delete它. 看了看网 ...
- matlab中矩阵和向量的创建
1.向量的创建 1)直接输入: 行向量:a=[1,2,3,4,5] 列向量:a=[1;2;3;4;5] 2)用“:”生成向量 a=J:K 生成的行向量是a=[J,J+1,…,K] a=J:D:K 生成 ...
- Python内置数据类型之List篇
List的定义: li = ["one" , "two" , "three" , "four"] List是一个有序的集 ...
- jQuery事件绑定方式(转)
bind() 简要描述 bind()向匹配元素添加一个或多个事件处理器. 使用方式 $(selector).bind(event,data,function) event:必需项:添加到元素的一个或多 ...
- Symfony2 学习笔记之内部构件
Symfony2内部是怎样工作的以及我们如何来扩展它呢?从外部整体上看,symfony2代码是由许多独立的层构成,每一层都是建立在前一层基础之上.其中,自动加载时不受框架直接管理的,它完全是在Univ ...
- 如何用HTML5+PhoneGap写个Path项目
最近Path这个应用很火爆,网上也出现了不少仿Path菜单的项目.即使在原生APP里边,Path的效果也是非常赞的.我突然想,Web APP是不是也能做出类似Path那样的效果呢?于是就有了OPath ...
- php5.2转向 PHP 5.3 的 PHP 开发
PHP 5.3 开始,为了更好的向 PHP 的未来版本(PHP6) 过渡,将未来不再支持的函数标记为 DEPRECATED.在代码中使用这些函数,将毫不留情的在页面中显示警告信息:“使用了过时的函数… ...
- Hbase shell详情
HBase 为用户提供了一个非常方便的使用方式, 我们称之为“HBase Shell”.HBase Shell 提供了大多数的 HBase 命令, 通过 HBase Shell 用户可以方便地创建.删 ...