[设计模式]装饰者模式(Decorator)

【装饰者模式】装饰者模式就是给一个对象增加一些新的功能,而且是动态的。要求装饰对象和被装饰对象实现同一个接口,装饰对象持有被装饰对象的实例。

【应用场景】

1、需要扩展一个类的功能。

2、动态的为一个对象增加功能,而且还能动态撤销。(继承不能做到这一点,继承的功能是静态的,不能动态增删)

缺点

产生过多相似的对象,不易排错!

【代码介绍】

共同接口:Sourceable

public interface Sourceable {    
    public void method();    
}  

被装饰类:Source

public class Source implements Sourceable {    
    
    @Override    
    public void method() {    
        System.out.println("Source.method()");    
    }    
} 

装饰者类:Decorator

扫描二维码关注公众号,回复: 1063043 查看本文章
public class Decorator implements Sourceable {    
    
    private Sourceable sourceable;    
        
    public Decorator(Sourceable sourceable){    
        super();    
        this.sourceable = sourceable;    
    }    
    @Override    
    public void method() {    
        System.out.println("before decorator!");    
        sourceable.method();    
        System.out.println("after decorator!");    
    }    
}  

测试主类:

public class DecoratorTest {    
    
    public static void main(String[] args) {    
        Sourceable source = new Source();    
        Sourceable decorator = new Decorator(source);    
        decorator.method();    
    }    
} 

测试输出:

before decorator!
Source.method()
after decorator!

猜你喜欢

转载自blog.csdn.net/u010904687/article/details/80383431