设计模式是用来实现软件设计进行分工的。设计模式应该是小巧的,对具体问题提出解决方案,以提高代码复用率,提高代码耦合性。Cocos Creator中引入MVC模式的主要目的是:为了帮助Cocos Creator开发者脱离拖拽脚本导致的后期维护方面带来的困难。
一、基本的MVC模式组成
- 控制器(Controller)- 负责转发请求,对请求进行处理。
- 视图(View) - 界面设计人员进行图形界面设计。
- 模型(Model) - 程序员编写程序应有的功能(实现算法等等),或者便数据库程序员进行数据管理和数据库设计(可以实现具体的功能)。
因此,更具体一点的图形化描述如下:
组件的互动
将应用程序划分为三种组件,模型 - 视图 - 控制器(MVC)设计定义它们之间的相互作用。
因此,更具体一些有关上述三组件的关系描述如下:
- 模型(Model)——用于封装与应用程序的业务逻辑相关的数据以及对数据的处理方法。“ Model ”有对数据直接访问的权力,例如对数据库的访问。“Model”不依赖“View”和“Controller”;也就是说, Model 不关心它会被如何显示或是如何被操作。但是 Model 中数据的变化一般会通过一种刷新机制被公布。为了实现这种机制,那些用于监视此 Model 的 View 必须事先在此 Model 上注册,这样一来,View 可以了解在数据 Model 上发生的改变。
- 视图(View)——能够实现数据有目的的显示(理论上,这不是必需的)。在 View 中一般没有程序上的逻辑。为了实现 View 上的刷新功能,View 需要访问它监视的数据模型(Model),因此应该事先在被它监视的数据那里注册。
- 控制器(Controller)——起到不同层面间的组织协调作用,用于控制应用程序的流程。它的典型任务是:负责处理事件并作出响应。“事件”包括用户的行为和数据 Model 上的改变。
MVC模式的优点与缺点
优点:一,易于理解,技术含量不高。便于开发与维护。二,耦合性不高,表现层与业务层分离,有利于开发。
缺点:没有明确定义,完全理解很困难。开发MVC项目,将MVC模式运用其中,Model和View严格分离困难。其次,MVC模式将一个应用程序分成3个部件,对于小规模项目,反而会带来更多的工作量以及复杂性。
二、Cocos Creator中的MVC模式
视图部分
cocos creator这类工具,都是可视化编辑,编辑完后就有了一个"视图", 普通开发的时候,我们会往节点上挂脚本,往按钮上绑定事件,这样做最大的不好,是让美术修改视图的时候还要关心程序的组件,万一不小心删除了… …, 所以我们一般在挂脚本绑定事件的时候,尽量都在代码里面来完成,
这些完成的过程,实际就是控制视图, 属于控制器的内容,视图要保持足够的简单,不要绑脚本或代码。
控制器部分
在控制器里面终归是要访问视图的,我们在控制器里面怎么方便的访问视图呢?一般我们会编写一个代码(或自动生成), 这个代码作为控制器的基类,在控制器里面我们要非常方便的能访问到视图view里面的各个节点,才能方便的对里面的数据进行绑定, 我们这边的处理方式,会建立一个view 的字典, 字典是view上个节点的名字路径与view 节点对象对应,而这个功能,我们会在控制器的基类里面来把节点加载到字典里面,然后所有的控制器都继承自这个基类,这样,在控制器里面就可以通过 this.view[路径]能非常方便的访问我们的view上的节点,和非常方便的来控制他们挂事件和脚本。
模型部分
控制器除了控制视图外,还要调用模型(Model)。Model, 我们通常会包括了常用的处理逻辑和数据, 例如策划的配置文件,武器的配置文件等等。 我们会提供对应的工具和框架方便和策划来沟通,来做我们的游戏数据,这个时候通常我们用到的是excel表格,excel表格给策划来填写。
主要参考资料
- https://www.jianshu.com/p/c7a23568d615
- https://blog.csdn.net/lansetiankong12/article/details/46327859
- https://wenku.baidu.com/view/1374e73bf9d6195f312b3169a45177232f60e4fb.html?_wkts_=1688264529864&bdQuery=cocos+creator+mvc%E6%9E%B6%E6%9E%84
- https://zhuanlan.zhihu.com/p/428487620?utm_id=0