zoukankan      html  css  js  c++  java
  • C# PureMVC 学习笔记

    参考:http://www.cnblogs.com/skynet/category/441705.html

         http://www.jianshu.com/p/904b36ad37e2

    PureMVC

    GameObject : 基本上是最底层,除了Unity自身的组件外,不依赖PureMVC任何类。

    Mediator : 只依赖GameObject,与GameObject一对一绑定,GameObject的输入通过事件(event)传递到Mediator调用。

    Command :  最底层,通过消息系统与Mediator通信,依赖Proxy(因为有时需要通过Proxy得到实体进行一些运算,Proxy只进行一些数据操作而已,所以就不通过消息系统发送消息到Proxy中去了)。

    Proxy : 最底层,除了对应的数据类之外,不依赖任何类。

    View : 单例,除了内嵌了一个观察者模式的消息系统外,它的职责只有管理Mediator

    Controller : 单例,在内部调用了消息系统的监听方法,它的职责只管理Command

    Model : 单例,职责只管理Proxy

    Facade : 单例,职责管理View,Controller,Model,因为View有消息系统,所以它间接也有发送消息的功能

    Notifier : 功能类,调用了Facade的消息系统来通知其他对象,所以实质上是在调用View的消息系统(Observer)发送消息

    从这些类的功能上可以看出,每个类的职责都很单一,功能之间分离得很明显。要是Unity能用新的C#特性的话可以优化得更好。

    个人想法:

      1.Controller是利用了对应Type的类型来创建对象,从而调用方法,每次执行一个命令都要实例化一个类。对Unity的GC来说不太友好,可以使用缓存实例化的类来解决

      2.Observer消息系统利用了反射对象的方法名(字符串)来调用观察对象的方法,可以使用存储委托或事件来调用观察对象的方法

    这里需要注意的是,一开始用很容易混乱,不知道哪个类写哪些逻辑。我个人理解是Mediator类只写与GameObject相关的逻辑,比如一些动画,行为等,Proxy只写与数据操作的逻辑,比如增删查改,Command写一些验证的逻辑,比如利用正则表达式判断是否符合要求之类的,或者先从缓存读取一些数据,反正就尽量不要经常访问Proxy,因为Proxy可能要远程连接服务器获取数据,比较慢。

    备注:在最新的PureMVC版本里已经改为使用委托来做消息系统了。

  • 相关阅读:
    git 项目代码打包
    jira查看字段
    jmeter压力测试报错:java.net.BindException: Address already in use: connect解决办法
    python 破解验证码
    mysql授权远程登录
    豆瓣api
    利用python开发财务工具
    钉钉发送消息通知
    git使用命令行自动登录
    后宫
  • 原文地址:https://www.cnblogs.com/SeaSwallow/p/6782659.html
Copyright © 2011-2022 走看看