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的主要调用方法,总结如下:

  1. Proxy 不持有其他类型的引用,只会注册消息。可以发送消息。
  2. Mediator 可以持有 Proxy 的引用,可以发送消息。
  3. Command 可以获取 Proxy 和 Mediator 对象并与之交互,也可以发送消息。

对于数据的核心逻辑,应该放在Proxy 中做。界面元素的操作应该放在Mediator 中做。而大量的业务逻辑,应该放在Command中做。虽然Mediator里也可以到,但是建议放在Command中,这样Command可以被View的其它部分重用。比起普通的MVC,Pure MVC在C这一部分的改动比较大,增加了C的代码复用度。

参考

  1. Pure MVC
  2. puremvc-csharp-demo-silverlight-employeeadmin
  3. PureMVC框架在Unity中的应用(一)
  4. PureMVC框架在Unity中的应用(二)
  5. PureMVC (Unity游戏框架入门学习首选) 个人理解学习详细笔记

Pure MVC 架构简述相关推荐

  1. JavaWeb快速入门 MVC架构三层架构

    一.MVC的发展                 JavaWEB发展史(4个阶段): https://blog.csdn.net/yuangan1529/article/details/1184412 ...

  2. iOS开发-------MVC架构思想-植物大战僵尸

    十月长假也就这么过去了,利用假期想磨练一下自己的MVC架构的思想,于是找了一个相对比较麻烦的Demo来锻炼下,在之前很喜欢植物大战僵尸这个游戏,也算为游戏致敬了,但是这个植物大战僵尸肯定不是之前玩过的 ...

  3. Unity MVC模式简述

    Unity MVC模式简述 什么是MVC MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式.这种模式用于应用程序的分层开发. Model(模型) - 模型代表一 ...

  4. 基于REST的MVC架构设计与实现

    在上一篇随笔已经讲述了REST的WEB serivce架构的相关知识,并且搭建了一个非常简单的实例,在另一篇随笔中也写了ajax用JSON序列化数据的传输,在这篇文章将结合前两篇随笔所讲的知识做一个稍 ...

  5. Javascript MVC架构之旅

    为什么80%的码农都做不了架构师?>>>    日期:2012-9-10  来源:GBin1.com 本文摘自smashingmagazine的Journey Through The ...

  6. JSP中应用MVC架构

    MVC模式,将应用程序分为3个部分 模型层--Model 视图层--View 控制层--Controller MVC是这三部分英文字母的缩写 在JSP开发中,也可以应用MVC 模型层 是应用程序的核心 ...

  7. data spring 指定时区_Spring 框架基础(05):Mvc架构模式,执行流程详解

    本文源码:GitHub || GitEE 一.SpringMvc框架简介 1.Mvc设计理念 MVC是一种软件设计典范,用一种业务逻辑.数据.界面显示分离的方法组织代码,将业务逻辑聚集到一个组件里面, ...

  8. nodejs服务端MVC架构介绍

    nodejs服务端MVC架构介绍 MVC架构本质:确定每一个js文件的职责 以nodejs数据管理系统为例,本文章代码仅为服务端演示代码,单独复制粘贴可能无效果.因为MVC并不是一门技术,而是一种项目 ...

  9. spring mvc返回页面显示空白_Spring 框架基础(06):Mvc架构模式简介,执行流程详解...

    一.SpringMvc框架简介 1.Mvc设计理念 MVC是一种软件设计典范,用一种业务逻辑.数据.界面显示分离的方法组织代码,将业务逻辑聚集到一个组件里面,在改进和个性化定制界面及用户交互的同时,不 ...

最新文章

  1. 详解DNS递归查询与迭代查询
  2. (翻译)Quartz官方教程——第七课:TriggerListeners 和 JobListeners
  3. Axure RP使用攻略--入门级(七)之axure元件使用思路的补充
  4. sql优化的方法及思路_合理的sql优化思路--如何缩短SQL调优时间?
  5. 你知道SQL的这些错误用法吗?
  6. 并不对劲的bzoj5475:loj2983:p5206:[wc2019]数树
  7. Linux文件去掉^M
  8. Ubuntu 12.04 静态ip的设置方法
  9. VC++2005项目的目录结构设置
  10. [No0000B3].NET C# 单体模式(Singleton)
  11. matlab矩阵内存预分配
  12. 什么是平板电脑的杀手锏?
  13. linux buffer cache 过高_工作中经常用的linux命令 free
  14. vant组件二次封装-下拉刷新列表组件
  15. 海外手机号码格式校验(PHP版)
  16. tpx色卡电子版_pantone色卡电子版-pantone色卡中文版 3.0 免费版 - 河东下载站
  17. CorelDRAW暗角效果怎么做?
  18. 什么是CI/CD?它们与敏捷开发和devops的关系?
  19. Spring cloud网关gateway代理websocket报Max frame length of 65536 has been exceeded
  20. 英特尔卖了通信与手机处理器,中国厂商是哭还是笑?

热门文章

  1. Lyapunov稳定性理论
  2. 计算机维修工职业技能鉴定国家题库答案,计算机维修工职业技能鉴定国家题库2.doc...
  3. 如何解除计算机上的安全警报,windows安全警报怎么关闭 为什么总是弹出安全警告...
  4. Charles抓包Android app
  5. Windows 10 安装 CUDA 失败之屡败屡战
  6. QQ2018手机版 v7.9.0
  7. kafka命令之消费者组
  8. 赛诺贝斯B2B营销研习社|一场直播>20篇微信推文?B2B直播要点全解析(内附SOP流程图)
  9. Android开发环境搭建详细图解
  10. 仪器仪表应用,国产IC用于替代AD7792,AD7793的型号分享,完全P=P