个人的PureMVC学习笔记
前言
初入Unity行业,公司某项目使用的框架是PureMVC,在学校的时候对设计模式和框架都了解尚浅,自己项目的代码都是想到哪写到哪,可读性差且耦合性高,正好借此机会了解学习下多人协作项目所使用的框架。
一、了解程序框架
程序框架是一个半成品程序,一个框架可以让一个程序更容易管理,更容易维护,程序员通过框架进行程序开发更高效。
二、了解MVC
什么是MVC?
MVC是Model View Controller的缩写,M(Model)是指业务模型,V(View)是指用户界面,C(Controller)则是控制器。
- 模型(Model)用于封装与应用程序的业务逻辑相关的数据以及对数据的处理方法。“ Model
”有对数据直接访问的权力,例如对数据库的访问。“Model”不依赖“View”和“Controller”,也就是说, Model 不关心它会被如何显示或是如何被操作。但是 Model 中数据的变化一般会通过一种刷新机制被公布。为了实现这种机制,那些用于监视此Model 的 View 必须事先在此 Model 上注册,从而,View 可以了解在数据 Model 上发生的改变。 - 视图(View)能够实现数据有目的的显示(理论上,这不是必需的)。在 View 中一般没有程序上的逻辑。为了实现 View上的刷新功能,View 需要访问它监视的数据模型(Model),因此应该事先在被它监视的数据那里注册。
- 控制器(Controller)起到不同层面间的组织作用,用于控制应用程序的流程。它处理事件并作出响应。“事件”包括用户的行为和数据Model 上的改变。
MVC是用一种业务逻辑、数据与界面显示分离的方法来组织代码,将众多的业务逻辑聚集到一个部件里面,在需要改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑,达到减少编码的时间。
三、了解PureMVC
PureMVC:以标准MVC思想进行扩展,将程序分三层:数据、控制、视图使用消息事件系统机制进行三层之间通讯,进行代码解耦,核心消息系统机制使用的是观察者模式思想解耦型强,被业内广泛使用。
特点:轻量级、解耦性强、易于理解、学习成本地、简单高效。
下图为官方对PureMVC设计示意图
PureMVC框架的目标很明确,它把程序分为了低耦合的三层:Model、View、Controller。由Facade统一管理。
- Model保存对Proxy对象的引用,Proxy负责操作数据模型,与远程服务通信存取数据。
- View保存对Mediator对象的引用。由Mediator对象来操作具体的视图组件“ViewComponent”
- Controller保存所有Command的映射。Command可以获取Proxy对象并与之交互,通过发送Notifacation来执行其他的Command。(本质仍是View内部的观察系统)
- Proxy是负责操作数据模型的,什么是数据模型?数据模型就是数据库,XML等。我们可以直观地理解为Proxy是用来对数据模型进行查询、插入、更新、删除等操作的类。操作完成后就会发送Notification消息,通知其他层进行更新。Proxy只管发送信息,不会监听信息避免耦合。
- Mediator负责操作具体的视图组件,包括:添加事件监听器,发送或接受Notification,直接改变视图组件的状态。比如:给Button添加事件,点击Button时发送Notifacation,告诉Controller执行相应的操作。比如一个登录的按钮,Mediator会发送通知给controller,告诉它执行登录操作。Mediator还负责直接改变视图的状态。比如点击登录按钮之后,Mediator改变登录按钮置灰避免重复操作。还可以在视图上显示一条信息告诉我正在执行登录操作等。总结Medoator是用来管理具体视图的。
- Command可以获取Proxy对象并与之交互,通过发送Notification来执行其他的Command。比如点击登录按钮后,Mediator就会告诉Controller执行相应的Command。既然是登录需要知道用户的信息,Command就会告诉Proxy来查询数据库或者其他数据模型来访问相应数据。Proxy查询好数据后发送Notification通知Command我已经查询好了,然后把信息返回给Command进行验证,同时Mediator也可以接收Proxy发送的Notifacation,通过视图告诉用户正在验证信息。Command验证了用户信息后,发送Notification把验证结果返回给Mediator,告诉用户验证的结果。或者Command也可以发送Notifacation给执行其他Command操作,比如验证读取用户信息详细资料等。
下图为PureMVC间各个模块交流的简单例子
四、实战训练
1、PureMVC框架的下载
官网:PureMVC官网
github下载地址:PureMVC C#的标准框架下载地址
2、PureMVC框架的导入
找到PureMVC框架的代码文件夹,内含三个核心、十个接口、八个类。
在Unity项目的Asset文件夹下新建PureMVC文件夹,将这三个文件夹导入其中。
3、新建控件
创建两个button按钮和一个text文本框。
4、代码编写
新建几个C#脚本,排列和命名如下:
MyData脚本:
/// <summary>
/// 初始数据
/// </summary>
public class MyData
{
public int dataValue = 7;
}
MyDataProxy脚本:
using PureMVC.Patterns.Proxy;
public class MyDataProxy : Proxy
{
public const string proxyName = "MyData01";
public MyData myData = null;
public MyDataProxy() :