找回密码
 注册帐号

扫一扫,访问微社区

云枫 浅谈PureMVC框架

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

13

主题

89

帖子

742

积分

Rank: 9Rank: 9Rank: 9

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

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

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

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





Facade类的构造方法[mw_shl_code=csharp,true] 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;
            }
        }[/mw_shl_code]





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




明白初始化方法之后。

在此基础上创建一个XXXFacade类继承于Facade。
覆盖父类的方法。[mw_shl_code=csharp,true]   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();
        }[/mw_shl_code]





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


下面定义一个(开始的命令类)StartCommand
这个类继承于SimpleCommand
也可以继承于另一个类,下次再说。
[mw_shl_code=csharp,true] internal class StartCommand : SimpleCommand
    {
        public override void Execute(INotification notification)
        {

//命令本体,例如
//Debug.Log("开始了,看看传过来的是什么东西:" + notification.name);

}}[/mw_shl_code]








此时我们需要一个绑定于场景中的脚本用来帮助我们做交互。
   [mw_shl_code=csharp,true]public class Main : MonoBehaviour
    {
        public TestView TestView = null;
      

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

[/mw_shl_code]



此时我们需要在XXXFacade中创建一个开始方法
[mw_shl_code=csharp,true]void 开始(Main main)
{
SendNotification("开始" , main);

}[/mw_shl_code]





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

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






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


回复

使用道具 举报

7日久生情
3211/5000
排名
322
昨日变化

1

主题

397

帖子

3211

积分

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

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

使用道具 举报

排名
5577
昨日变化

13

主题

89

帖子

742

积分

Rank: 9Rank: 9Rank: 9

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

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

使用道具 举报

7日久生情
1873/5000
排名
908
昨日变化

0

主题

118

帖子

1873

积分

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

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

使用道具 举报

排名
26980
昨日变化

0

主题

19

帖子

39

积分

Rank: 1

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

使用道具 举报

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

1

主题

1679

帖子

2645

积分

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

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

使用道具 举报

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

本版积分规则