找回密码
 注册帐号

扫一扫,访问微社区

云枫 浅谈PureMVC框架

6
回复
2274
查看
[ 复制链接 ]
排名
5577
昨日变化

13

主题

90

帖子

752

积分

Rank: 9Rank: 9Rank: 9

UID
215257
好友
6
蛮牛币
1814
威望
0
注册时间
2017-3-29
在线时间
357 小时
最后登录
2019-6-12
2019-1-8 22:21:18 显示全部楼层 阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册帐号

x
简单地谈谈PureMVC框架,算是入门篇。
从Facade进入整个框架体系。





Facade类的构造方法
[C#] 纯文本查看 复制代码
 protected virtual void InitializeFacade()
        {
            this.InitializeModel();
            this.InitializeController();
            this.InitializeView();
        }

        protected virtual void InitializeModel()
        {
            if (this.m_model == null)
            {
                this.m_model = Model.Instance;
            }
        }

        protected virtual void InitializeController()
        {
            if (this.m_controller == null)
            {
                this.m_controller = Controller.Instance;
            }
        }

        protected virtual void InitializeView()
        {
            if (this.m_view == null)
            {
                this.m_view = View.Instance;
            }
        }





在初始化Facade的时候会获取MVC的实例,分别创建Model,View,Controller。




明白初始化方法之后。

在此基础上创建一个XXXFacade类继承于Facade。
覆盖父类的方法。
[C#] 纯文本查看 复制代码
   protected override void InitializeFacade()
        {
            base.InitializeFacade();
        }

        protected override void InitializeView()
        {
            base.InitializeView();
        }

        
        protected override void InitializeController()
        {
            base.InitializeController();
            RegisterCommand(“开始” , typeof(开始的命令类));
        }

        protected override void InitializeModel()
        {
            base.InitializeModel();
        }






上文中的“开始”,在实际中是以常量字符串的方式表示。命名为常量是为了捕获字符串错误。


下面定义一个(开始的命令类)StartCommand
这个类继承于SimpleCommand
也可以继承于另一个类,下次再说。
[C#] 纯文本查看 复制代码
 internal class StartCommand : SimpleCommand
    {
        public override void Execute(INotification notification)
        {[/font][/font]
[font=宋体][font=宋体]//命令本体,例如[/font][/font]
[font=宋体][font=宋体]//Debug.Log("开始了,看看传过来的是什么东西:" + notification.name);
[/font][/font]
[font=宋体][font=宋体]}}









此时我们需要一个绑定于场景中的脚本用来帮助我们做交互。
   
[C#] 纯文本查看 复制代码
public class Main : MonoBehaviour
    {
        public TestView TestView = null;
      

        private void Start()
        {
            XXXFacade facade = new XXXFacade();
            facade.开始(this);
        }
    }





此时我们需要在XXXFacade中创建一个开始方法
[C#] 纯文本查看 复制代码
void 开始(Main main)
{
 SendNotification("开始" , main);

}





之前注册了一个命令,名称是"开始",命令类是StartCommand。

发送这个消息之后  上面的StartCommand就会执行它的Execute方法,同时接收传过来的Main。
Execute方法的执行结果是输出:
开始了,看看传过来的是什么东西:main






这篇主要提到的是PureMVC框架中基本的命令注册与发送消息。
这篇涉及到了命令模式和观察者模式,下一篇进入中介者模式,代理模式和外观模式。


回复

使用道具 举报

7日久生情
3261/5000
排名
321
昨日变化

1

主题

409

帖子

3261

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
2219
好友
1
蛮牛币
9284
威望
0
注册时间
2013-8-19
在线时间
1013 小时
最后登录
2019-6-18
2019-1-9 10:43:19 显示全部楼层
关注下,看看有没有真实经验谈
回复 支持 反对

使用道具 举报

排名
5577
昨日变化

13

主题

90

帖子

752

积分

Rank: 9Rank: 9Rank: 9

UID
215257
好友
6
蛮牛币
1814
威望
0
注册时间
2017-3-29
在线时间
357 小时
最后登录
2019-6-12
楼主 2019-1-9 13:44:23 显示全部楼层
eureka 发表于 2019-1-9 10:43
关注下,看看有没有真实经验谈

不涉及到具体项目的,只是把整体框架梳理一遍,给自己做做笔记而已。有写错的地方请多多指教。
回复 支持 反对

使用道具 举报

7日久生情
1884/5000
排名
907
昨日变化

0

主题

123

帖子

1884

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
35660
好友
0
蛮牛币
2829
威望
0
注册时间
2014-7-22
在线时间
633 小时
最后登录
2019-5-30
2019-1-11 11:28:03 显示全部楼层
是一篇好文章,喜欢这样的有技术深度的文章
回复 支持 反对

使用道具 举报

排名
26982
昨日变化

0

主题

19

帖子

39

积分

Rank: 1

UID
309854
好友
0
蛮牛币
50
威望
0
注册时间
2018-12-27
在线时间
6 小时
最后登录
2019-2-13
2019-1-12 17:48:07 显示全部楼层
wasedroprtbuyhxrkolrtfgui
回复 支持 反对

使用道具 举报

7日久生情
2811/5000
排名
2230
昨日变化

1

主题

1811

帖子

2811

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
119154
好友
0
蛮牛币
3038
威望
0
注册时间
2015-8-21
在线时间
369 小时
最后登录
2019-6-20
2019-1-14 10:01:35 显示全部楼层
谢谢楼主大大。
回复

使用道具 举报

0

主题

4

帖子

4

积分

Rank: 1

UID
324541
好友
0
蛮牛币
1
威望
0
注册时间
2019-6-11
在线时间
2 小时
最后登录
2019-6-20
2019-6-11 19:44:38 显示全部楼层
感謝教學~~~謝謝樓主
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则