Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 看不到装饰器和适配器之间的区别_Actionscript 3_Oop_Design Patterns - Fatal编程技术网

Actionscript 3 看不到装饰器和适配器之间的区别

Actionscript 3 看不到装饰器和适配器之间的区别,actionscript-3,oop,design-patterns,Actionscript 3,Oop,Design Patterns,我知道这两种设计模式,以及如何实现它们(适配器的对象和类实现),但我看不到何时使用每一种模式的明确区别 例如,在AS3中,如果我想包装一个MovieClip类并向其添加一个按钮功能,我应该使用Adapter还是Decorator设计模式?在两种模式的实现中,新对象通常“包装”原始对象,因此混淆它们是完全可以理解的 但它们有很多不同的目的 在适配器模式中,您在原始对象中具有正确的功能,但需要使用不同的接口 在Decorator模式中,您希望使用原始接口,但也希望添加功能 在您向MovieClip添

我知道这两种设计模式,以及如何实现它们(适配器的对象和类实现),但我看不到何时使用每一种模式的明确区别


例如,在AS3中,如果我想包装一个MovieClip类并向其添加一个按钮功能,我应该使用Adapter还是Decorator设计模式?

在两种模式的实现中,新对象通常“包装”原始对象,因此混淆它们是完全可以理解的

但它们有很多不同的目的

在适配器模式中,您在原始对象中具有正确的功能,但需要使用不同的接口

在Decorator模式中,您希望使用原始接口,但也希望添加功能


在您向
MovieClip
添加按钮功能的示例中,您可能需要的是装饰器。

在这两种模式的实现中,新对象通常“包装”原始对象,因此混淆它们是完全可以理解的

但它们有很多不同的目的

在适配器模式中,您在原始对象中具有正确的功能,但需要使用不同的接口

在Decorator模式中,您希望使用原始接口,但也希望添加功能


在您将按钮功能添加到
MovieClip
的示例中,很可能您想要的是一个装饰器。

如果您只想添加一些附加功能,请使用装饰器如果您只想添加一些附加功能,请使用装饰器。实际上,关于细节,我们不能说太多,因为我不太了解涉及的AS3类。这是一个很好的答案,我只是想知道如何用按钮功能包装MovieClip,并且仍然编码到MovieClip接口。对我来说,这样做更有意义:var-button:IButton=new-button(mySkin);//按钮是适配器而不是var按钮:MovieClip=新按钮编辑器(mySkin);我真的不能说太多的细节,因为我真的不知道涉及的AS3类。这是一个相当好的答案,我只是想知道我如何包装按钮功能的MovieClip,仍然是编码到MovieClip接口。对我来说,这样做更有意义:var-button:IButton=new-button(mySkin);//按钮是适配器而不是var按钮:MovieClip=新按钮编辑器(mySkin);