Pure MVC 架构简述
Pure MVC 架构简述
前言
游戏UI开发中,常常使用MVC架构(Model数据、View界面、Controller控制)。这个架构方便解耦数据、界面和交互逻辑。一般来说V可以持有M,C可以持有V和M。普通的MVC写法,容易把逻辑都写到C里,导致C无限制膨胀,逻辑也不好复用。
Model
一个界面,拥有一个Model类型的单例。这个Model是持有了多个Proxy。每个Proxy都对应了一类数据,并且提供了这访问、修改这些数据的方法。可以说Proxy是数据核心逻辑的处理地。同时Proxy可以注册一些消息。
View
一个界面,也只拥有一个View类型的单例。这个单例持有了一系列 Mediator 和 Observer 。Mediator 是具体操作UI组件的类,包括:添加事件监听、发送或接收 Notification,以及直接操作UI组件的状态。Observer 就是用来接收 Mediator 注册的消息,总体来说是为 Mediator 服务的。
Controller
同样,一个界面,也只拥有一个Controller类型的单例。Controller 持有了所有Command,Command是一个被封装成对象的“行为”。Command的执行是通过发送Notification通知操作的。Command 对象是无状态的;只有在需要的时候( Controller 收到相应的Notification)才会被创建,并且在被执行(调用 execute 方法)之后就会被删除。
Facade
Facade,作为这MVC三者的门面,主要负责访问和通知Model、Viiew 和 Controller。也提供发送消息的接口。
总结
Pure MVC的主要调用方法,总结如下:
- Proxy 不持有其他类型的引用,只会注册消息。可以发送消息。
- Mediator 可以持有 Proxy 的引用,可以发送消息。
- Command 可以获取 Proxy 和 Mediator 对象并与之交互,也可以发送消息。
对于数据的核心逻辑,应该放在Proxy 中做。界面元素的操作应该放在Mediator 中做。而大量的业务逻辑,应该放在Command中做。虽然Mediator里也可以到,但是建议放在Command中,这样Command可以被View的其它部分重用。比起普通的MVC,Pure MVC在C这一部分的改动比较大,增加了C的代码复用度。
参考
- Pure MVC
- puremvc-csharp-demo-silverlight-employeeadmin
- PureMVC框架在Unity中的应用(一)
- PureMVC框架在Unity中的应用(二)
- PureMVC (Unity游戏框架入门学习首选) 个人理解学习详细笔记
Pure MVC 架构简述相关推荐
- JavaWeb快速入门 MVC架构三层架构
一.MVC的发展 JavaWEB发展史(4个阶段): https://blog.csdn.net/yuangan1529/article/details/1184412 ...
- iOS开发-------MVC架构思想-植物大战僵尸
十月长假也就这么过去了,利用假期想磨练一下自己的MVC架构的思想,于是找了一个相对比较麻烦的Demo来锻炼下,在之前很喜欢植物大战僵尸这个游戏,也算为游戏致敬了,但是这个植物大战僵尸肯定不是之前玩过的 ...
- Unity MVC模式简述
Unity MVC模式简述 什么是MVC MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式.这种模式用于应用程序的分层开发. Model(模型) - 模型代表一 ...
- 基于REST的MVC架构设计与实现
在上一篇随笔已经讲述了REST的WEB serivce架构的相关知识,并且搭建了一个非常简单的实例,在另一篇随笔中也写了ajax用JSON序列化数据的传输,在这篇文章将结合前两篇随笔所讲的知识做一个稍 ...
- Javascript MVC架构之旅
为什么80%的码农都做不了架构师?>>> 日期:2012-9-10 来源:GBin1.com 本文摘自smashingmagazine的Journey Through The ...
- JSP中应用MVC架构
MVC模式,将应用程序分为3个部分 模型层--Model 视图层--View 控制层--Controller MVC是这三部分英文字母的缩写 在JSP开发中,也可以应用MVC 模型层 是应用程序的核心 ...
- data spring 指定时区_Spring 框架基础(05):Mvc架构模式,执行流程详解
本文源码:GitHub || GitEE 一.SpringMvc框架简介 1.Mvc设计理念 MVC是一种软件设计典范,用一种业务逻辑.数据.界面显示分离的方法组织代码,将业务逻辑聚集到一个组件里面, ...
- nodejs服务端MVC架构介绍
nodejs服务端MVC架构介绍 MVC架构本质:确定每一个js文件的职责 以nodejs数据管理系统为例,本文章代码仅为服务端演示代码,单独复制粘贴可能无效果.因为MVC并不是一门技术,而是一种项目 ...
- spring mvc返回页面显示空白_Spring 框架基础(06):Mvc架构模式简介,执行流程详解...
一.SpringMvc框架简介 1.Mvc设计理念 MVC是一种软件设计典范,用一种业务逻辑.数据.界面显示分离的方法组织代码,将业务逻辑聚集到一个组件里面,在改进和个性化定制界面及用户交互的同时,不 ...
最新文章
- 详解DNS递归查询与迭代查询
- (翻译)Quartz官方教程——第七课:TriggerListeners 和 JobListeners
- Axure RP使用攻略--入门级(七)之axure元件使用思路的补充
- sql优化的方法及思路_合理的sql优化思路--如何缩短SQL调优时间?
- 你知道SQL的这些错误用法吗?
- 并不对劲的bzoj5475:loj2983:p5206:[wc2019]数树
- Linux文件去掉^M
- Ubuntu 12.04 静态ip的设置方法
- VC++2005项目的目录结构设置
- [No0000B3].NET C# 单体模式(Singleton)
- matlab矩阵内存预分配
- 什么是平板电脑的杀手锏?
- linux buffer cache 过高_工作中经常用的linux命令 free
- vant组件二次封装-下拉刷新列表组件
- 海外手机号码格式校验(PHP版)
- tpx色卡电子版_pantone色卡电子版-pantone色卡中文版 3.0 免费版 - 河东下载站
- CorelDRAW暗角效果怎么做?
- 什么是CI/CD?它们与敏捷开发和devops的关系?
- Spring cloud网关gateway代理websocket报Max frame length of 65536 has been exceeded
- 英特尔卖了通信与手机处理器,中国厂商是哭还是笑?
热门文章
- Lyapunov稳定性理论
- 计算机维修工职业技能鉴定国家题库答案,计算机维修工职业技能鉴定国家题库2.doc...
- 如何解除计算机上的安全警报,windows安全警报怎么关闭 为什么总是弹出安全警告...
- Charles抓包Android app
- Windows 10 安装 CUDA 失败之屡败屡战
- QQ2018手机版 v7.9.0
- kafka命令之消费者组
- 赛诺贝斯B2B营销研习社|一场直播>20篇微信推文?B2B直播要点全解析(内附SOP流程图)
- Android开发环境搭建详细图解
- 仪器仪表应用,国产IC用于替代AD7792,AD7793的型号分享,完全P=P