博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PureMVC 简单案例
阅读量:6676 次
发布时间:2019-06-25

本文共 4313 字,大约阅读时间需要 14 分钟。

链接: https://pan.baidu.com/s/1VPjIzLCOePnSL9r9kkLWWg 提取码: i9sj

01:MVC的定义

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
02:下载安装PureMVC
在这里插入图片描述
1.Proxy(代理) 相当于经典MVC中的Model.它将代理Model的所有职权。负责维护和操作应用程序的数据模型。Proxy通常情况下会暴露一组公共API供Controller(command)或View(mediator)调用,以获取、修改或更新程序数据。注意Proxy只可以发送通知,不可以也不应该让它接收通知。
2. Mediator(中介) 对应MVC中的View.它接管了View的所有职权,负责数据内容的视图呈现和捕获用户输入。Mediator管理者View Component, Mediator可以监听View Component发出的Event,它通过这些事件监听捕获用户输入。Mediator可以接收或发送通知,以跟Controller(Command)或其他Mediator交流。Mediator用于Model(Proxy)对外暴露的公共API操控Model(Proxy);
3. Command(命令)。它相当于一个指挥部,负责协调调度PureMVC中的Proxy和Mediator以转发通知。Command以接收或发送通知的方式跟View(Mediator)或其他Command通信,用Model(Proxy)暴露的公共API操控Model(Proxy).
4. Façade(经纪人) 在PureMVC中,M、V、C都是被作为单例封装在Façade类中的,他们对外不可见。在使用PureMVC框架的时候,不需要去创建Model、View和Controller,只需要创建一个Façade的单例,它就会自动创建出M、V、C这三个核心模块,并且为他们建立起通信机制。我们只要调用Façade暴露出来的公共方法就可以启动整个程序,所有的消息流转都在Façade内部完成。
5. View Component 是PureMvc框架中真正的可视元素,例如一个影片剪辑或一个按钮等。它通过事件与Mediator交流。通过向外暴露的API供Mediator操作。
6. Data Object 是PureMVC框架中真正的数据,它可以是一个数值对象、一个集合或是一个数据库。它通过Proxy的构造函数传入Proxy,并被一个名为data的属性引用。
03:创建脚本在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
MyDate 模型层

/****************************************************	功能:模型类 存储原始数据*****************************************************/using UnityEngine;public class MyDate{    private int _level = 0;    public int Level    {        get        {            return _level;        }        set        {            _level = value;        }    }}

DataProxy 模型代理类

/****************************************************	功能:模型代理类 数据操作*****************************************************/using PureMVC.Patterns;using UnityEngine;public class DataProxy : Proxy{    //覆盖父类的字段    public new const string NAME = "DataProxy";    private MyDate _myDate = null;    public DataProxy():base(NAME)    {        _myDate=new MyDate();    }    //增加的方法    public void AddLevel(int number=1)    {        _myDate.Level += number;        //数据发送给视图层        SendNotification("MsgAddLevel",_myDate);    }}

DataMediator 视图层

/****************************************************	功能:视图类 显示*****************************************************/using System.Collections.Generic;using PureMVC.Interfaces;using PureMVC.Patterns;using UnityEngine;using UnityEngine.UI;public class DataMediator : Mediator{    public new const string NAME = "DataMediator";    private Text text;    private Button button;    public DataMediator(GameObject root)    {        text = root.transform.Find("Text").GetComponent
(); button= root.transform.Find("Button").GetComponent

DataCommand 控制层

/****************************************************	功能: 控制类*****************************************************/using PureMVC.Interfaces;using PureMVC.Patterns;using UnityEngine;public class DataCommand : SimpleCommand{    //执行方法    public override void Execute(INotification notification)    {        //获取代理;        DataProxy proxy=(DataProxy)Facade.RetrieveProxy(DataProxy.NAME);        proxy.AddLevel(10);    }}

ApplicationFacade 全局管理类

/****************************************************	功能:全局管理类*****************************************************/using PureMVC.Patterns;using UnityEngine;public class ApplicationFacade : Facade{    public ApplicationFacade(GameObject root)    {        //关联三个层        RegisterCommand("RegCommand",typeof(DataCommand));        RegisterMediator(new DataMediator(root));        RegisterProxy(new DataProxy());    }}

挂载到Canvas上

/****************************************************	功能:开始游戏*****************************************************/using UnityEngine;public class StartGame : MonoBehaviour {    private void Start()    {        new ApplicationFacade(this.gameObject);    }}

在这里插入图片描述

在这里插入图片描述
PureMVC框架机制
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

转载地址:http://bzrxo.baihongyu.com/

你可能感兴趣的文章
java学习笔记 --- String类
查看>>
1.5-cut命令
查看>>
我的友情链接
查看>>
从技术角度看人与人的沟通
查看>>
加速sshd
查看>>
15.3、SElinux介绍
查看>>
关于Nagios Core
查看>>
python基本数据类型的介绍
查看>>
原生的js写Ajax请求
查看>>
战略合作背后的秘密:VMware沦为AWS的渠道商?
查看>>
tar.gz安装
查看>>
Centos6.5 glibc 升级
查看>>
排序——C++函数调用
查看>>
Pandownload关了,还有更牛逼的百度网盘全速下载方法
查看>>
【转】C++文件流の添加数字到指定文件中
查看>>
在网络设备上暂挂会话
查看>>
SQL中访问远程数据库(MSSQL)
查看>>
Django学习
查看>>
python excel操作
查看>>
我的友情链接
查看>>