【游戏技术群】959392658  【游戏出海群】12067810
游戏蛮牛 手机端
开启辅助访问
 找回密码
 注册帐号

扫一扫,访问微社区

开发者专栏

关注:2395

当前位置:游戏蛮牛 技术专区 开发者专栏

__________________________________________________________________________________
开发者干货区版块规则:

  1、文章必须是图文形式。(至少2幅图)
      2、文章字数必须保持在1500字节以上。(编辑器右下角有字数检查)
      3、本版块只支持在游戏蛮牛原创首发,不支持转载。
      4、本版块回复不得无意义,如:顶、呵呵、不错......【真的会扣分的哦】
      5、......
__________________________________________________________________________________
查看: 1280|回复: 5

[云枫] 浅谈PureMVC框架

[复制链接]  [移动端链接]
排名
5469
昨日变化
2

13

主题

88

帖子

738

积分

Rank: 9Rank: 9Rank: 9

UID
215257
好友
6
蛮牛币
1773
威望
0
注册时间
2017-3-29
在线时间
346 小时
最后登录
2019-1-18

迈向小康

发表于 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日久生情
3084/5000
排名
341
昨日变化

1

主题

383

帖子

3084

积分

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

UID
2219
好友
1
蛮牛币
8394
威望
0
注册时间
2013-8-19
在线时间
938 小时
最后登录
2019-1-19
发表于 2019-1-9 10:43:19 | 显示全部楼层
关注下,看看有没有真实经验谈

回复 支持 反对

使用道具 举报

排名
5469
昨日变化
2

13

主题

88

帖子

738

积分

Rank: 9Rank: 9Rank: 9

UID
215257
好友
6
蛮牛币
1773
威望
0
注册时间
2017-3-29
在线时间
346 小时
最后登录
2019-1-18

迈向小康

 楼主| 发表于 2019-1-9 13:44:23 | 显示全部楼层
eureka 发表于 2019-1-9 10:43
关注下,看看有没有真实经验谈

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

回复 支持 反对

使用道具 举报

7日久生情
1833/5000
排名
933
昨日变化
1

0

主题

116

帖子

1833

积分

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

UID
35660
好友
0
蛮牛币
2688
威望
0
注册时间
2014-7-22
在线时间
619 小时
最后登录
2019-1-14
发表于 2019-1-11 11:28:03 | 显示全部楼层
是一篇好文章,喜欢这样的有技术深度的文章
[发帖际遇]: yongzhoubaji 乐于助人,奖励 3 蛮牛币. 幸运榜 / 衰神榜

回复 支持 反对

使用道具 举报

排名
31061
昨日变化
16

0

主题

15

帖子

29

积分

Rank: 1

UID
309854
好友
0
蛮牛币
52
威望
0
注册时间
2018-12-27
在线时间
4 小时
最后登录
2019-1-12
发表于 2019-1-12 17:48:07 | 显示全部楼层
wasedroprtbuyhxrkolrtfgui
[发帖际遇]: 1517986902 乐于助人,奖励 2 蛮牛币. 幸运榜 / 衰神榜

回复 支持 反对

使用道具 举报

7日久生情
2428/5000
排名
2430
昨日变化
9

1

主题

1548

帖子

2428

积分

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

UID
119154
好友
0
蛮牛币
2735
威望
0
注册时间
2015-8-21
在线时间
303 小时
最后登录
2019-1-18
发表于 6 天前 | 显示全部楼层
谢谢楼主大大。

回复

使用道具 举报

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

本版积分规则

快速回复 返回顶部 返回列表