Cocos2d-js中的简易MVC框架(二)数据模型Model

Cocos2d-js中的简易MVC框架(二)数据模型Model,第1张

概述 模型能为多个视图提供数据,由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。数据模型Model在MVC结构中扮演者非常重要的较色。    在我写的这套MVC结构中Model作为本地数据逻辑存储对象来使用,主要负责监听服务器数据返回、通知控制器修改视图、处理数据逻辑和保存数据对象。    IModel作为model的基类,主要实现接口如下: game.IModel = c

模型能为多个视图提供数据,由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。数据模型Model在MVC结构中扮演者非常重要的较色。

在我写的这套MVC结构中Model作为本地数据逻辑存储对象来使用,主要负责监听服务器数据返回、通知控制器修改视图、处理数据逻辑和保存数据对象。

IModel作为model的基类,主要实现接口如下:

game.IModel = cc.Class.extend({ 
ctor:function () { },
init:function () {
throw new Error("SubClass not init subscribe function.");
},
//Use this function to send notification.
send:function (key,obj) {
game.Notification.send(key,obj);
}});

ctor作为构造函数不必多说。Init函数子类必须去实现,在初始化Model对象时init函数会自动被调用,子类对象可以在init函数中做一些初始化 *** 作等,在网络游戏项目中对服务器数据返回的监听也是放在init函数中进行注册。Send是进行消息分发的函数,有两个参数key、obj,key是消息的唯一ID,obj是消息要传递的对象。在mvc的结构中model通过发送通知告诉mediator控制器数据变化,mediator再根据自己的逻辑进行处理然后控制VIEw进行更新。一般Model可以被mediator持有。

在Facade中提供了一个注册model的共有接口在游戏初始化中提供调用:

game.Facade.registerModel = function (cls,model) { 
model.init();
var isExist = game.Facade._modelMap.contains(cls);
if (isExist) {
cc.log("Model:" + cls + " have already exists!");
} else {
game.Facade._modelMap.put(cls,model);
}}

cls为类名,model为实例对象,注册后在mediator中会提供接口方便获取注册的model实例,具体获取方法在介绍mediator时会讲到。注册model的方法如下:

//注册model
GameControler.registModel = function () { game.Facade.registerModel(model.usermodel,new model.usermodel());
}


如果你喜欢我的文章就关注我吧:

总结

以上是内存溢出为你收集整理的Cocos2d-js中的简易MVC框架(二)数据模型Model全部内容,希望文章能够帮你解决Cocos2d-js中的简易MVC框架(二)数据模型Model所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1082003.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存