【muzzik教程】mvc、mvp、mvvm在creator中的应用

# 前言

此篇教程贴对新手的帮助比较大,大佬们也可以随便看看

示例项目:
github(点击跳转)
gitee(点击跳转)

MVC

简单的介绍下,MVC其实是model、view、controller的分离,但是发现没有,网上的很多MVC的调用关系都不一样,如下图


其实只要符合model、view、controller的定义,都算作是MVC

model: 数据层
view:视图层(只存在视图方法)
controller:业务逻辑层(C中不应该出现直接控制视图的逻辑,而是通过数据(设计图一)或者事件(设计图二)去驱动视图

小提示

  • 层与层之间的交互尽量使用回调或者去使用消息机制去完成,尽量避免直接持有

示例项目中采用第一结构图


MVP

$VH%D)B1BPDIE7K7VP~S%D

model:数据层(只与P交互)
view:视图层(只与P交互)
presenter:业务逻辑层(负责数据的更新以及视图的更新)

MVP和MVC最大的区别就是完全隔离了model和view,但是也造成了一个问题,presenter的臃肿

示例项目中采用第二结构图


MVVM

A8P2%B~GCFC%USZCEAN}GX

model:数据层(只与VM交互)
view:视图层(只与VM交互)
viewModel:业务逻辑层(负责视图和数据之间的绑定)

咋一看和MVP的结构并没有什么区别,但是他们区别在于内部的使用,VM负责的是将V和M绑定,然后操作M即可实现V的更新,这一点可以免去手动派发事件,添加事件,也避免了程序上的疏漏(比如忘记派发更新视图事件)

以上均为个人理解,仅供参考,如有疏漏错误望告知


个人感悟

  • 小游戏: 可以不用MVC、MVP、MVVM,直接使用VM开发,业务逻辑和视图逻辑全在V中,最简单便捷,当然扩展性极差,不适应中大型项目
  • 中小型项目:MVC或者MVP
  • 展示数据较多的游戏:适用MVVM,比如QP,各种排行榜,流水,战绩之类的
5赞