它把这些请求转发给真实的对象。
(4) 装饰对象能够在转发这些请求曾经或以后添加一些附加功能。这样就确保了在执行时。不用改动给定对象的结构就能够在外部添加附加的功能。在面向对象的设计中。一般是通过继承来实现对给定类的功能扩展。
还有一种情况可能是由于类定义被隐藏,或类定义不能用于生成子类。
var Door = function() { } Door.prototype.open = function() { alert("打开门"); } var Decorator = function(decorator) { this.decorator = decorator; } Decorator.prototype.open = function() { this.decorator.open(); } var door = new Door(); var decorator = new Decorator(door); decorator = new Decorator(decorator); decorator.open();
原文:http://www.cnblogs.com/yangykaifa/p/7294384.html