Java设计模式之装饰模式

58 阅读1分钟

顾名思义,装饰模式就是给一个对象增加一些新的功能,而且是动态的,要求装饰对象和被装饰对象实现同一个接口,装饰对象持有被装饰对象的实例,关系图如下:
装饰模式

Source类是被装饰类Decorator类是一个装饰类,可以为Source类动态的添加一些功能,代码如下:

//1.创建一个接口
public interface Sourceable {  
    public void method();  
}  
//2.编写接口的实现类
public class Source implements Sourceable {  
    @Override  
    public void method() {  
        System.out.println("the original method!");  
    }  
}  
//3.装饰被装饰类
public class Decorator implements Sourceable {  
    //合成复用法则,把另一个对象当中当前类的一个属性,以构造方法的形式传过来
    //
    private Sourceable source;   //装饰类把被装饰类当做一个属性   
    public Decorator(Sourceable source){  //把被装饰者给传过来
        super();  
        this.source = source;  
    }  
    @Override  
    public void method() {  
        System.out.println("before decorator!");  
        source.method();  //在调用被装饰类之前可以做一些其他的操作
        System.out.println("after decorator!");  
    }  
}  
//测试类
public class DecoratorTest {  
    public static void main(String[] args) {  
        Sourceable source = new Source();  
        Sourceable obj = new Decorator(source);  
        obj.method();  
    }  
}  

装饰者设计模式
接口
原始类
装饰类

使用场景:为一个类动态的添加和动态的移除功能。