装饰者模式

装饰者模式的目的是在使用对象之前,增加被装饰者的行为。
所以这里有两点需要注意:

  • 使用的还是原对象,所以装饰者必须拥有和原对象一样的接口,即继承自同一个父类,或者实现同一个接口;
  • 既然要装饰原对象,那么就必须包含一个对原对象的引用,然后在调用原对象行为的前后加上对行为的装饰。
    所以,装饰者模式及继承/实现了接口,又包含一个继承/实现了接口的对象。
    继承/实现的目的是为了类型匹配,因为要引用的是一个原对象类型;
    引用一个原对象的目的是为了获取行为, 在原行为的基础上增加自己的行为。
    这里也间接的指出了使用组合还是使用继承的原则:当我们想要达到类型匹配时,使用继承;当我们为了复用行为时,使用组合

下面是截自 head first Design Pattern的装饰者模式的类图:

image.png

你可能感兴趣的:(装饰者模式)