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

    1. interface Source{
    2. void method();
    3. }
    4. public class Decorator implements Source{
    5. private Source source;
    6. public void decotate1(){
    7. System.out.println("decorate");
    8. }
    9. @Override
    10. public void method() {
    11. decotate1();
    12. source.method();
    13. }
    14. }

    使用场景:

    1. 需要扩展一个类的功能,或给一个类增加附加功能。
    2. 需要动态地给一个对象增加功能,这些功能可以再动态地撤销。
    3. 需要为一批的兄弟类进行改装或加装功能,当然是首选装饰模式。