博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MVC
阅读量:6676 次
发布时间:2019-06-25

本文共 3147 字,大约阅读时间需要 10 分钟。

01.介绍

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

02.

using System.Collections;using System.Collections.Generic;using UnityEngine;public abstract class Model {
//名字标识 public abstract string Name{
get;} //发送事件 protected void SendEvent(string eventName,object data=null) {
MVC.SendEvent(eventName,data); }}
using System.Collections;using System.Collections.Generic;using UnityEngine;public abstract class View : MonoBehaviour {
//名字标识 public abstract string Name {
get; } //事件关心列表 [HideInInspector] public List
AttentionList=new List
(); //注册事件 public virtual void RegisterAttentionEvent(){
} //处理事件 public abstract void HandleEvent(string name,object data); //发送事件 protected void SendEvent(string eventName,object data=null) {
MVC.SendEvent(eventName,data); } protected T GetModel
() where T:Model {
return MVC.GetModel
() as T; }}
using System.Collections;using System.Collections.Generic;using UnityEngine;using System.Linq;using System.Text;using System;public abstract class Controller {
//执行事件 public abstract void Execute(object data); //获取模型 protected T GetModel
() where T:Model {
return MVC.GetModel
() as T; } //获取视图 protected T GetView
() where T:View {
return MVC.GetView
() as T; } //注册模型 protected void RegisterModel(Model model) {
MVC.RegisterModel(model); } //注册视图 protected void RegisterView(View view) {
MVC.RegisterView(view); } //注册controler protected void RegisterController(string eventName,Type controllerType ) {
MVC.RegisterController(eventName,controllerType); }}
using System.Collections;using System.Collections.Generic;using UnityEngine;using System.Linq;using System.Text;using System;public static class MVC{
//资源 public static Dictionary
Models=new Dictionary
();//名字 -- model public static Dictionary
Views=new Dictionary
();//名字 -- View public static Dictionary
CommandMap=new Dictionary
();//事件名字 -- 类型 //注册View public static void RegisterView(View view) { //防止view重复注册 if(Views.ContainsKey(view.Name)) { Views.Remove(view.Name); } view.RegisterAttentionEvent(); Views[view.Name]=view; } //注册Model public static void RegisterModel(Model model) { Models[model.Name]=model; } //注册controller public static void RegisterController(string eventName,Type controllerType) { CommandMap[eventName]=controllerType; } //获取model public static T GetModel
() where T:Model { foreach(var m in Models.Values) { if(m is T) { return (T)m; } } return null; } //获取View public static T GetView
() where T:View { foreach(var v in Views.Values) { if(v is T) { return (T)v; } } return null; } //发送事件 public static void SendEvent(string eventName,object data=null) { //controller执行 if(CommandMap.ContainsKey(eventName)) { Type t=CommandMap[eventName]; //生成控制器 Controller c=Activator.CreateInstance(t) as Controller; c.Execute(data); } //view处理 foreach (var v in Views.Values) { if (v.AttentionList.Contains(eventName) ) { //执行 v.HandleEvent(eventName,data); } } }}

转载地址:http://sfrxo.baihongyu.com/

你可能感兴趣的文章
python使用os模块获取当前目录
查看>>
DNS服务(一)——DNS原理及其解析过程详解
查看>>
卸载linux软件总结
查看>>
redhat 6.5 安装和配置zabbix客户端
查看>>
硬链接和软链接(2)
查看>>
几种REST服务JAVA客户端类库
查看>>
什么是Hijax?Hijax的原理及优缺点介绍
查看>>
【2016-03-17】移动互联网时代,看好你的隐私
查看>>
linux命令:编译安装postfix邮件服务
查看>>
vi命令集
查看>>
oracle数据库克隆
查看>>
输出 pdf
查看>>
PHPCMS一个BUG
查看>>
APP云测试
查看>>
3-unit3 高速缓存DNS
查看>>
spark mllib 协同过滤算法,基于余弦相似度的用户相似度计算
查看>>
openwrt 基于qmi的 3G|4G拨号
查看>>
俞敏洪励志语
查看>>
开源|基于TensorFlow的聊天机器人-ErGo
查看>>
lucene4.0入门1
查看>>