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

public interface Source {
    void method1();
}


public class A implements Source {
    @Override
    public void method1() {
        System.out.println("这是A对象的功能");
    }
}


public class B implements Source {
    @Override
    public void method1() {
        System.out.println("这是B对象的功能");
    }
}



public class Decorator implements Source {
    private Source sourse;

    public Decorator(Source sourse) {
        super();
        this.sourse = sourse;
    }

    @Override
    public void method1() {
        System.out.println("这是装饰类的方法");
        sourse.method1();
    }
}

  

因为装饰类的构造器里面有一个参数是Source接口,所以只要把传入的参数改变就可以实现动态的更改扩展的功能

 

下面是测试

public class Test {
    public static void main(String[] args) {
        Source a=new A();
        Source b=new B();
        Source decoratorA = new Decorator(a);
        decoratorA.method1();
        Source decoratorB=new Decorator(b);
        decoratorB.method1();
    }
}

  

 

posted on 2019-03-11 02:30  蓝绿绿  阅读(104)  评论(0编辑  收藏  举报