//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學習筆記REMMVC筆記
- BBED學習之一
- rac學習之一
- MySQL學習筆記之一MySql筆記
- Java學習筆記之一Java筆記
- 分割槽表學習之一
- Elasticsearch聚合學習之一:基本操作Elasticsearch
- docker 學習之一:docker 安裝Docker
- hive學習之一:認識hiveHive
- 學習 第3章:專項練習之一
- JUnit5學習之一:基本操作
- jackson學習之一:基本資訊
- R語言學習筆記之一R語言筆記
- STL的學習筆記之一 (轉)筆記
- CCNA學習心得之一(推薦)(轉)
- Mysql學習積累之一[網摘收藏個人學習參考]MySql
- FFmpeg學習之一(FFmpeg原始碼編譯)原始碼編譯
- java基礎學習之一:物件和類Java物件
- 自我學習之一:淡入淡出(抄) (轉)
- mssql最佳化學習筆記之一SQL筆記
- 系統學習iOS動畫之一:檢視動畫iOS動畫
- JAVA學習系列之一-搭建開發環境Java開發環境
- Hadoop學習筆記之一 : HDFS原理二Hadoop筆記
- Hadoop學習筆記之一 : HDFS原理一Hadoop筆記
- 《深入淺出MFC》學習筆記之一 (轉)筆記
- hive學習筆記之一:基本資料型別Hive筆記資料型別
- 演算法學習之一:3SUM變體演算法
- 數字人粒子系統學習筆記之一筆記
- 深度學習筆記之一些基本術語深度學習筆記
- HBase學習之一: 建立hive和hbase關聯表Hive
- 演算法導論學習之一:氣泡排序演算法排序
- Hive學習之一 《Hive的介紹和安裝》Hive
- oracle10g_expdp工具測試學習_之一Oracle
- oracle10g_impdp工具測試學習_之一Oracle
- 最全SpringBoot學習教程,程式設計師必學之一Spring Boot程式設計師
- ORACLE 習題之一Oracle
- Flutter筆記——幀繪製系列之一(原始碼學習)Flutter筆記原始碼
- 統計學習方法c++實現之一 感知機