顾名思义,装饰模式就是给一个对象增加一些新的功能,而且是动态的,要求装饰对象和被装饰对象实现同一个接口,装饰对象持有被装饰对象的实例。
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();
}
}

浙公网安备 33010602011771号