Cocos2d-js中的简易MVC框架(二)数据模型Model
来源:互联网 发布:泉立方洗衣片 知乎 编辑:程序博客网 时间:2024/05/23 13:00
模型能为多个视图提供数据,由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。数据模型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());
}
如果你喜欢我的文章就关注我吧:
0 0
- Cocos2d-js中的简易MVC框架(二)数据模型Model
- Cocos2d-js中的简易MVC框架(一)框架简介
- Cocos2d-js中的简易MVC框架(三)中介者Mediator
- Cocos2d-js中的简易MVC框架(四)显示层View
- Cocos2d-JS中的简易MVC框架指南(一)
- Cocos2d-js中的简易MVC框架(五)MVC框架的使用
- js中如何建立model数据模型
- Node.js与Sails之Model数据模型
- MVC杂记<二>--Model
- MVC 中的Model对象
- JS简易运动框架
- Java简易MVC框架 etmvc
- mystruts简易MVC框架实现
- spring mvc 框架简易示例
- JAVA开发中的MVC框架(SSH,MVC)(二)
- asp.net MVC中的@model与Model
- PHP MVC 中的MODEL层
- scope 对象在 AngularJS 中充当数据模型的作用,也就是一般 MVC 框架中 Model 得角色.但又不完全与通常意义上的数据模型一样,因为 $scope 并不处理和操作数据,它只是建立了
- 消息传递
- [ElasticSearch]Java API 之 词条查询(Term Level Query)
- iOS项目内block的使用小结(1)
- iOS 发布提交出现:Your account already has a valid iOS Distribution certificate!问题解决
- H5应用 安卓输入法弹出撑开底部导航栏的问题解决
- Cocos2d-js中的简易MVC框架(二)数据模型Model
- 互联网络、路由器和地址相关习题整理
- 04-树7 二叉搜索树的操作集
- FSCalendar
- c语言宏相关知识分享
- xcode插件
- poj3469 Dual Core CPU-最小花费-最大流最小割
- RabbitMQ学习小结(二)----工作队列
- 安卓传递值对象