Skip to content

Latest commit

 

History

History
 
 

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 

README.md

装饰模式  

 定义  

动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。  

小结

为了拓展一个已有的代码,我们通常需要向代码库中添加新类以及新的方法。但是,有的时候我们需要在程序运行的过程中生成一个新的对象,并且这个对象具有一些新的行为。而后面的解释器模式就可以生成一个可执行的对象,根据其生成方式的不同,这个可执行的对象会具有多种不同的行为。
在大多数情况下,我们都只需要将一个对象的行为进行一些细小的调整,同时我们也希望这些经过调整的行为能够和原有的行为混合。这样一来,这个对象的行为就会包括原有的行为和经过调整后的行为。装饰模式就满足这种要求。通过装饰模式,我们可以在程序运行的过程中生成新的操作,这些新的操作就是原有的操作的某些变异。
装饰模式适用于以下几种情况:

  • 当需要以不影响其它对象为前提实现动态、透明地给单个对象添加职责时。  
  • 当需要将对象的某些职责进行撤销操作时。
  • 当不能用生成子类的方法进行当前系统的托充时。

装饰模式提供了一个公共操作,并且通过一个层次结构来实现了这个公共操作。因此,装饰模式与后面会提到的状态模式和策略模式还有解释器模式非常相似。一般情况下,装饰模式中每个类都会包含一个构造方法,这个构造方法需要使用另外一个装饰器的对象。所以,装饰模式又与后面的组合模式非常相似。此外,装饰器类通常要实现一个公共操作,这个公共操作将对自身的调用转发给另外一个装饰器对象,由这个装饰器对象来完成这个公共操作。使用装饰模式,我们可以在系统正在运行时对某个操作进行修改,这个修改后的操作往往能够跟原来的操作共同工作。