/**
* 装饰设计模式
* 为一个对象动态的添加一些功能
* 原类和装饰类共同实现一个接口,装饰类持有类的对象,
* 并在实现接口方法时调用该对象对该接口的实现方法,同时添加新的功能
*/
public class Decorator implements Sourceable {
private User user;
public Decorator(User user){
super();
this.user = user;
}
@Override
public void method() {
System.out.println("This will run before method.");
user.method();
System.out.println("This will run after method.");
}
}
public interface Sourceable {
void method();
}
public class User implements Sourceable {
@Override
public void method() {
System.out.println("The method() in User.");
}
}
public class Test {
public static void main(String[] args) {
User user = new User();
Sourceable decorator = new Decorator(user);
decorator.method();
}
}