使用装饰器模式实现clone()
使用装饰器模式实现clone()方法的最佳方法是什么?
在这个装饰器场景中:
var mario:Hero = new Mario();
mario = new HeroUpgrade(mario); //bigger moustache ;)
mario.clone(); //<--trying to grab a clone of the upgraded mario
然后(遵循装饰器模式)它会将clone()
委托回原始的mario
实例。所以clone()
会返回原来的mario
而不是升级版本。
我意识到,不是克隆,我可以从升级的马里奥实例中获取纪念品并将其注入新的Mario实例,但感觉应该有一个更简单的解决方案......
有小费吗?
没有找到相关结果
已邀请:
1 个回复
苛肠倒俱
此控制台应用程序的输出是:
或者,如果要克隆很多属性,装饰器可以这样做:
装饰器使用原始对象的clone方法,然后更新它自己更改的属性。但它仍然是负责最终结果的装饰者。