装饰者模式适用于往对象上动态地添加方法和属性,当方法和属性花样很多,又需要根据实际情况动态地修改的时候,可以选用这种模式。
具体实现方法其实和attatchOnload的思想一样,模式类里需要接收一个参数,这个参数是添加这个类之前的对象,先调用参数对象中的方法,然后在后面添加这个类里的新方法。
function newMethod(fun){
fun();
newFun();
}
装饰者和被装饰者是同一个超类派生的不同子类。被装饰者被装饰者装饰后,身份(类型)仍然是同样的类型(同一超类)。