cocoscreator中的MVC设计模式
在游戏开发的⾏业中摸爬滚打⾛了很多路,在这⾥将我的经验分享给⼤家。⽆论是unity或者是cocos,⽩鹭…在游戏的设计框架中⼤多数程序员还是遵循MVC来开发的。今天的涉及就是MVC模式,我以creator + typeSprite讲解。
⾸先为什么⽤MVC,好处⼜是什么呢?MVC⽆⼈不知,可很多程序员对MVC的概念的理解似乎有误,换⾔之他们⼀直在错⽤MVC,尽管即使如此软件也能被写出来,然⽽软件内部代码的组织⽅式却是不科学的,这会影响到软件的可维护性、可移植性,代码的可重⽤性。
MVC即Model、View、Controller即模型、视图、控制器。阅读别⼈的代码时发现,很多程序员倾向于将软件的业务逻辑放在Controller⾥,将数据库访问操作的代码放在Model⾥。
最终软件(⽹站)的代码结构是,View层是界⾯,Controller层是业务逻辑,Model层是数据库访问。
废话不多说,下⾯开始我们的代码之旅。
整个程序启动的函数
import ABCView from “./ABCView”
import { ABCCtl } from “./ABCCtl”
const {ccclass, property} = cc._decorator;
@ccclass
export default class Helloworld extends cc.Component {
@property(ABCView)
public eView: ABCView = null;
public onLoad() {
name : "张三",
age: 16,
}, this.eView)
}
}
control类
import { IAbc } from “./ABCM”;
export interface IAbcCtlDelegate {
onSubmitResult(): void;
}
const {ccclass, property} = cc._decorator;
@ccclass
export class ABCCtl {
private static sInstance: ABCCtl = null;
public static getInstance(): ABCCtl {
if (!ABCCtl.sInstance) {
ABCCtl.sInstance = new ABCCtl();
}
return ABCCtl.sInstance;
}
public mData: IAbc = null;
private mDelegate: IAbcCtlDelegate = null;
public init(data: IAbc, delegate: IAbcCtlDelegate) {
this.mData = data;
this.mDelegate = delegate;
}
public summit() {
SubmitResult();
}
}
view界⾯类
import { IAbcCtlDelegate, ABCCtl } from “./ABCCtl”;
const {ccclass, property} = cc._decorator;
@ccclass
export default class ABCView extends cc.Component implements IAbcCtlDelegate {
public onclickSummit() {
// 界⾯显⽰
}
onSubmitResult(): void {mvc的controller
throw new Error("Method not implemented.");
}
}
model数据类
export interface IAbc {
name: string;
age: number;
}
如果想到在外调⽤view层的代码,只能通过control类去调取,当然在代码中也添加了代理模式。以上就是针对MVC的设计模式了。鄙⼈⾃⼰感觉这套模式在基本的⼩游戏,中型游戏中都可以借⽤这套模式去开发。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论