25.PureMVC框架-Facade外观模式和Command命令模式
25.1 知识点
查看示意图Facade和Command是串联框架的重要组成
创建游戏外观脚本来管理整个游戏,继承Facade脚本。单核版本只允许有一个外观对象。
public class GameFacade : Facade
{
}
Facade父类已经存在instance。为了方便我们使用Facade,需要自己写一个单例模式的属性。
// 为了方便我们使用Facade,需要自己写一个单例模式的属性
public static GameFacade Instance
{
get
{
if (instance == null)
{
instance = new GameFacade();
}
return instance as GameFacade;
}
}
创建启动命令类,继承SimpleCommand。重写Execute执行命令方法。这个方法会在执行命令时调用。
public class StartUpCommand : SimpleCommand
{
// 重写里面的执行函数
public override void Execute(INotification notification)
{
base.Execute(notification);
// 当命令被执行时,就会调用该方法
// 启动命令中往往是做一些初始化操作
Debug.Log("123");
}
}
GameFacade重写InitializeController初始化控制器方法。这里面要写一些关于命令和通知绑定的逻辑。比如绑定启动通知和启动命令。
/// <summary>
/// 初始化控制层相关的内容
/// </summary>
protected override void InitializeController()
{
base.InitializeController();
// 这里面要写一些关于命令和通知绑定的逻辑
RegisterCommand(PureNotification.START_UP, () =>
{
return new StartUpCommand();
});
}
定义启动方法。方法中发送启动通知。这样就会调用启动命令的执行方法。
// 一定是有一个启动函数的
public void StartUp()
{
// 发送通知
SendNotification(PureNotification.START_UP);
}
创建主入口脚本,挂着到场景中空物体,测试有没有走到启动命令执行函数中
public class Main : MonoBehaviour
{
void Start()
{
GameFacade.Instance.StartUp();
}
}
25.2 知识点代码
GameFacade
using PureMVC.Interfaces;
using PureMVC.Patterns.Facade;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//1.继承PureMVC中Facade脚本
public class GameFacade : Facade
{
//2.为了方便我们使用Facade 需要自己写一个单例模式的属性
public static GameFacade Instance
{
get
{
if (instance == null)
{
instance = new GameFacade();
}
return instance as GameFacade;
}
}
/// <summary>
/// 3.初始化 控制层相关的内容
/// </summary>
protected override void InitializeController()
{
base.InitializeController();
//这里面要写一些 关于 命令和通知 绑定的逻辑
RegisterCommand(PureNotification.START_UP, () =>
{
return new StartUpCommand();
});
}
//4.一定是有一个启动函数的
public void StartUp()
{
//发送通知
SendNotification(PureNotification.START_UP);
//SendNotification(PureNotification.SHOW_PANEL, "MainPanel");
}
}
StartUpCommand
using PureMVC.Interfaces;
using PureMVC.Patterns.Command;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class StartUpCommand : SimpleCommand
{
//1.继承Command相关的脚本
//2.重写里面的执行函数
public override void Execute(INotification notification)
{
base.Execute(notification);
//当命令被执行时 就会调用该方法
//启动命令中 往往是做一些初始化操作
Debug.Log("123");
}
}
Main
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Main : MonoBehaviour
{
void Start()
{
GameFacade.Instance.StartUp();
}
}
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com