ItemRender---之使用ClassFactory生成渲染器

问题
你想在运行时修改List或DataGridColumn的渲染器,或改变渲染器的属性。

解决方案

使用ClassFactory对象作为Itemrenderer。ClassFactory实现了IFactory接口,你只要传一个类对象(即Class类型的对象)给它,它就可以生成这个类的对象。

 

讨论

 这种解决办法,使用了工厂设计模式,并且使用了flex的一些内部机制。在使用工厂模式时,你需要指定一个类型给工厂,这个类型的对象会被工厂类产生并作为渲染器使用,并且工厂类可以控制渲染器的生命周期。那么我们如何把类型指定给工厂类呢?我们需要传一个类对象给工厂类,正如下边的代码。

var factory:ClassFactory = new ClassFactory(oreilly.cookbook.SevenTwoFactor );

 

在这里原文提到了 SevenTwoFactor继承IFactory接口等等,大家需要多了解一些ClassFactory的相关知识,在实际操作中,我们一般都是创建ClassFactory的实例赋值itemRenderer。因为set itemRenderer方法需要的参数是IFactory类型,系统最终会用这个factory对象实例我们的itemRenderer。也就是说,我们给系统的不是一个itemRenderer而是一个能产生itemRenderer的factory,在系统需要时自己用factory产生itemRenderer的实例,也许信息的读者会发现,当我们写mxml的时候,itemRenderer的属性可以赋值一个类路径,这就是因为flex对mxml里的itemRenderer做了一些特殊的功能,如果你传的是一个类路径,系统会帮你创建一个ClassFactory。

例子:

DynamicRenderer 

 

SmallIconRenderer 

 

BigIconRenderer

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值