在ActionScript中生成动态代理/装饰器/封装器

问题描述 投票:0回答:1

我正在寻找一种方法来做这样的事情:

class ClassA
{
    public function func1():void{}
}

class ClassB extends ClassA
{
    public override function func1():void{
        trace("middleman");
        base.func1();
    }
}

我知道代理类,但是我想要实现的是类似的东西

var instance:ClassA = new ClassA();
instance = Modifier.messWith(instance); //returns instance with ClassB functionality, without ClassB being defined at compile time

我想要提供额外功能的类数量很高,并且我不想花很多时间为每个类编写扩展类。另一个用于不同的功能。有什么办法可以实现我正在尝试的目标?

编辑:作为回答,这是整个事情的最终目标,因为我在某种程度上使这个问题变得乱码:

我需要一种方法来生成动态代理,类似于Castle.DynamicProxy在C#中所做的那样,以便创建我正在研究的远程调用概念库。现有的Proxy类完全可以满足我的要求,但是有一个致命的缺点-它需要代理该类来扩展Proxy,这有两个缺点:1)我需要代理的所有类都需要扩展代理,这在使用现有代码时是一个问题。2)如果将对象简单地包装在一个代理的通用实现中(代理随机calasses函数调用并对其执行某些操作的类),则该对象不能传递给具有强类型参数的现有函数,因为它没有正确的类型(只有Proxy或其扩展名是可能的类型)。

actionscript-3
1个回答
0
投票

我认为您应该分享它的终结点目标,因为您要的东西与AS3

© www.soinside.com 2019 - 2024. All rights reserved.