# 前言
此篇教程贴对新手的帮助比较大,大佬们也可以随便看看
示例项目:
github(点击跳转)
gitee(点击跳转)
MVC
简单的介绍下,MVC其实是model、view、controller的分离,但是发现没有,网上的很多MVC的调用关系都不一样,如下图
其实只要符合model、view、controller的定义,都算作是MVC
model: 数据层
view:视图层(只存在视图方法)
controller:业务逻辑层(C中不应该出现直接控制视图的逻辑,而是通过数据(设计图一)或者事件(设计图二)去驱动视图)
小提示:
- 层与层之间的交互尽量使用回调或者去使用消息机制去完成,尽量避免直接持有
示例项目中采用第一结构图
MVP
model:数据层(只与P交互)
view:视图层(只与P交互)
presenter:业务逻辑层(负责数据的更新以及视图的更新)
MVP和MVC最大的区别就是完全隔离了model和view,但是也造成了一个问题,presenter的臃肿
示例项目中采用第二结构图
MVVM
model:数据层(只与VM交互)
view:视图层(只与VM交互)
viewModel:业务逻辑层(负责视图和数据之间的绑定)
咋一看和MVP的结构并没有什么区别,但是他们区别在于内部的使用,VM负责的是将V和M绑定,然后操作M即可实现V的更新,这一点可以免去手动派发事件,添加事件,也避免了程序上的疏漏(比如忘记派发更新视图事件)
以上均为个人理解,仅供参考,如有疏漏错误望告知
个人感悟
- 小游戏: 可以不用MVC、MVP、MVVM,直接使用VM开发,业务逻辑和视图逻辑全在V中,最简单便捷,当然扩展性极差,不适应中大型项目
- 中小型项目:MVC或者MVP
- 展示数据较多的游戏:适用MVVM,比如QP,各种排行榜,流水,战绩之类的