当前位置:  编程语言>其它

flash AS3反射实现(describeType和getDefinitionByName)

 
    发布时间:2014-1-13  


    本文导语:  为什么要用反射机制去生成对象?首先,其目的是为了解耦,解除代码间的耦合程度,降低维护成本。如果你用过工厂模式,或者对维护噩梦有所感悟就会知道为什么要解耦了。无论什么工厂模式,即使是抽象...

      为什么要用反射机制去生成对象?首先,其目的是为了解耦,解除代码间的耦合程度,降低维护成本。如果你用过工厂模式,或者对维护噩梦有所感悟就会知道为什么要解耦了。无论什么工厂模式,即使是抽象工厂模式也好,也不能根本性解除代码中生成对象的耦合问题,只能说能大大降低耦合程度,因为你生成对象必然要new此对象,而这意味着没可能在不修改代码的前提下扩展新的内容,例如你要增加一些新的子类,必然要在生成的地方new一个此类对象。恩,实质就是修改已有代码去扩展新功能,违反了开闭原则,即使影响很小很小,但确实是违反了。Web服务器/前端 iis7站长之家,小项目确实没有体现什么弊端,而当你程序达到足够庞大的时候,你就会发现,修改代码是一件很痛苦的事。正是这个原因,反射机制出现了。反射机制的原理我的理解是,通过一个中间件配置要生成的对象,一般是通过XML文件实现,把你新增加的的名字记录在XML配置文件内,通过已有的程序代码反射这个从配置文件里读取出来的类名字,动态生成对应类的对象。

反射功能:

      根据类型名字,能够生成这个类型的对象;或者

      根据某个类型对象,生成新的对象,就是”原型prototype)"的概念。

c++这类静态语言,实现反射须要外部支持,因为他语言类型本身不支持完整的运行时类型信息。as3语言支持这类功能。

AS3中通过,describeType(obj:Object) 和getDefinitionByName(name:String) 就可以实现反射。

1. 获取对象名字

   如果我们应用已经知道对象名字,这步就不用做了。

     var xml:XML = describeType(data);        objName = xml.@name;

2. 根据名字生成对象

     var ObjClass:Class = getDefinitionByName(objName) as Class;      var obj:Object = new ObjClass();

最多就上面两步,就能实现反射了。

    您可能感兴趣的文章:

  • 本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载,整理或搜集自网络.欢迎任何形式的转载,转载请注明出处.
    转载请注明:文章转载自:[169IT-IT技术资讯]
    本文标题:flash AS3反射实现(describeType和getDefinitionByName)
相关文章推荐:


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3