PureMVC与DarkStar(SGS)通信之接收数据后的处理

      最近准备用PureMVC+DarkStar做一个虚拟社区的游戏,做总感觉完全用PureMVC不太适合,所以对其进行了部分改造,不知道改造方案如何,还请大家多多指点。

      今天改造的部分是Proxy,我做了一个专门用于接收和发送数据的类DSSocketProxy,MsgType是管理消息类型的,DSSocketProxy接收到消息后根据类型从MsgType中获取Proxy的NAME(例如LoginProxy)。那些要对接收消息进行处理的Proxy都实现了IMsgFactory接口。这样DSSocketProxy就可以通过Proxy名和实现的接口对消息进行派发。 类图如下:

PureMVC与DarkStar(SGS)通信之接收数据后的处理_第1张图片

 

部分代码如下:接收消息后的处理部分

try { var type:String = msgType.getType("0001"); var proxy:IMsgFactory = facade.retrieveProxy(type) as IMsgFactory; if (null == proxy) { // 利用反射机制创建Proxy实例 type = "com.jacobi.model." + type; var ClassReference:Class = getDefinitionByName(type) as Class; var instance:Object = new ClassReference(null); facade.registerProxy(instance as IProxy); proxy = instance as IMsgFactory; } proxy.analyse("IMsgFactory 测试成功"); } catch(e:Error) { trace(e.toString()); } 

 

MsgType类:

package com.jacobi.sysinterface { import flash.utils.Dictionary; public class MsgType { private static var instance:MsgType = null; // 单例实例 private var types:Dictionary = null; // 消息Hash表 public static function getInstance():MsgType { if (null == instance) { instance = new MsgType(); } return instance; } /** * 创建消息类型表 * */ public function initType():void { types = new Dictionary(); types["0001"] = "LoginProxy"; types["0002"] = "GetFriendsProxy"; } /** * 根据类型获取相应Proxy的NAME * @param key 消息类型 * @return Proxy的NAME * */ public function getType(key:String):String { return types[key]; } } } 

 

你可能感兴趣的:(function,String,null,Class,Dictionary,Types)