标签:
只是很简单的一层封装,没实现多少功能。继IList之后的实现,若想了解有关IList的实现类ArrayList,可以进入 http://my.oschina.net/u/2011113/blog/514713 。
结构图为
ObjectMap实现了IMap的所有接口,其代码如下:
package tunie.struct.group { import tunie.struct.error.ErrorDesc; /** * Tunie * Oct 9, 2015 1:58:11 PM * <b>ObjectMap主要功能如下</b> * <li>对象Map,简单封装 */ public class ObjectMap extends Group implements IGroup , IMap { protected var _vals:GroupVals; public function ObjectMap() { _vals = new GroupVals(); } //pass public function put(property:String, value:*):void { if(value == null) { ErrorDesc.throws("插入的数据不能为空"); } _vals.put(property , value); } //pass public function remove(property:String):* { var rmValue:* = _vals.put(property); if(rmValue == undefined) { rmValue = null; } return rmValue; } //pass public function removeList(propertyList:IList):IList { if(propertyList.isEmpty) return null; var list:IList = new ArrayList(); for(var i:int = 0; i < propertyList.size ; i++) { list.add(remove(propertyList.obtain(i))); } return list; } //pass public function obtain(property:String):* { var value:* = _vals.obtain(property); if(value == undefined) { value = null; } return value; } //pass public function obtainList(propertyList:IList):IList { if(propertyList.isEmpty) return null; var list:IList = new ArrayList(); for(var i:int = 0; i < propertyList.size ; i++) { list.add(obtain(propertyList.obtain(i))); } return list; } //pass public function get propertyList():IList { return _vals.propertyList; } //pass public function get valueList():IList { var list:IList = obtainList(propertyList); if(list == null) { list = new ArrayList(); } return list; } //pass public function get size():int { return propertyList.size; } //pass override public function clear():void { _vals = new GroupVals(); } //pass override public function contain(value:*):Boolean { if(value == null) return false; return valueList.contain(value); } //pass override public function get isEmpty():Boolean { return size == 0; } } }
代码注释很清楚,也很简洁,若有不是很明白的地方,可以回复提出。下面贴出依赖的类,部分依赖类请查看上篇文章http://my.oschina.net/u/2011113/blog/514713 。
GroupVals
package tunie.struct.group { import tunie.struct.ObjectVals; /** * Tunie * Oct 9, 2015 2:00:46 PM * <b>ListVals主要功能如下</b> * <li>1. */ public class GroupVals extends ObjectVals { public function GroupVals(obj:Object=null) { super(obj); } /** * 取得属性列表 * @return */ //pass public function get propertyList():IList { var list:IList = new ArrayList(); for(var i:String in _obj) { list.add(i); } return list; } } }
ObjectVals
package tunie.struct { /** * Tunie * Oct 8, 2015 2:44:34 PM * <b>ObjectVals主要功能如下</b> * <li>对象数据,简单封装一下Object */ public class ObjectVals { protected var _obj:Object; public function ObjectVals(obj:Object = null) { _obj = obj; if(_obj == null) { _obj = {}; } } /** * 增删改 * 新增或修改一个名为property值为value的属性,若value为null,则删除名的property的这个属性, * 并返回原有的属性值 * @param property * @param value * @return 返回原有属性值 */ public function put(property:String , value:* = null):* { var oriValue:* = getProp(property); if(value == null) { delProp(property); } else { setProp(property , value); } return oriValue; } /** * 查 * 取得名为property的属性值 * @param property * @return */ public function obtain(property:String):* { return getProp(property); } /** * @return */ public function execute(property:String , fnParams:Array = null):CallbackResult { var fn:Function = getProp(property); return Callback.exeCallback(fn , fnParams); } /** * 取得名为property的属性值 * @param property * @return */ protected function getProp(property:String):* { return _obj[property]; } /** * 设置名为property的属性值为value * @param property * @param value */ protected function setProp(property:String , value:*):void { _obj[property] = value; } /** * 删除名为property的属性 * @param property */ protected function delProp(property:String):void { delete _obj[property]; } } }
Callback
package tunie.struct { /** * Tunie * Oct 8, 2015 2:54:16 PM * <b>Callback主要功能如下</b> * <li>回调函数 */ public class Callback { private var _vals:ObjectVals; public function Callback(fn:Function , fnParams:Array = null) { _vals = new ObjectVals(); _vals.put("fn" , fn); _vals.put("fnParams" , fnParams); } /** * 执行回调函数 * @return */ public function execute():CallbackResult { return _vals.execute("fn" , _vals.obtain("fnParams")); } /** * 更改回调函数的参数 * @return */ public function alterParams(fnParams:Array):void { _vals.put("fnParams" , fnParams); } /** * 更改回调函数参数列表中的第index个参数的值 * @param param * @param index * @return 并返回原有的参数 */ public function alterParam(param:* , index:int = 0):* { var fnParams:Array = _vals.obtain("fnParams"); var oriParam:* ; if(fnParams == null) { fnParams = []; _vals.put("fnParams" , fnParams); index = 0; oriParam = null; } else{ oriParam = fnParams[index]; } fnParams[index] = param; return oriParam; } /** * 追加回调函数参数 * @param param */ public function appendParam(param:*):void { var fnParams:Array = _vals.obtain("fnParams"); if(fnParams == null) { fnParams = []; _vals.put("fnParams" , fnParams); } fnParams.push(param); } /** * 执行一个回调函数 * @param fn * @param fnParams * @return */ public static function exeCallback(fn:Function , fnParams:Array = null):CallbackResult { var result:CallbackResult = new CallbackResult(); if(fn == null) { result.error = "error:回调函数不能为空"; } else { result.result = fn.apply(null , fnParams); } return result; } } }
CallbackResult
package tunie.struct { /** * Tunie * Oct 8, 2015 3:18:29 PM * <b>CallbackResult主要功能如下</b> * <li>回调函数执行后的结果 */ public class CallbackResult { private var _vals:ObjectVals; public function CallbackResult() { _vals = new ObjectVals(); } /** * 执行结果异常信息 * @param value * */ public function set error(value:String):void { _vals.put("error" , value); } public function get error():String { return _vals.obtain("error"); } /** * 回调函数执行结果 * @param value */ public function set result(value:*):void { _vals.put("result", value); } public function get result():* { return _vals.obtain("result"); } } }
IMap
package tunie.struct.group { /** * Tunie * Oct 9, 2015 1:47:18 PM * <b>IMap主要功能如下</b> * <li>限制键值为String类型 */ public interface IMap extends IGroup { /** * 添加或修改property的值为value * @param property * @param value 不能为null */ function put(property:String , value:*):void; /** * 移除键值property * @param property * @return */ function remove(property:String):*; /** * 移除一组键值 * @param propertyList * @return */ function removeList(propertyList:IList):IList; /** * 根据property取得对应的值 * @param property * @return */ function obtain(property:String):*; /** * 根据一组property取得对应的值列表 * @param propertyList * @return */ function obtainList(propertyList:IList):IList; /** * 键值列表 * @return */ function get propertyList():IList; /** * 值列表 * @return */ function get valueList():IList; /** * 长度 * @return */ function get size():int; } }
标签:
原文地址:http://my.oschina.net/u/2011113/blog/514791