定义:
动态地给对象添加一些额外的职责。
要点:
1、定义接口
2、定义普通实现类
3、定义装饰器角色
实例:
/**
*
* 说话统一接口
*
* @author ypqiao
*
*/
public interface Say {
/**
* 根据str返回相应的说话内容
* @param str
* @return
* @throws Exception
*/
public String say( String str ) throws Exception;
}
/**
*
* Say接口实现
* 返回形如“hello XXX”的字符串
* @author ypqiao
*
*/
public class SayHello implements Say {
@Override
public String say(String str) throws Exception {
return "Hello "+str;
}
}
/**
*
* 装饰器角色
*
* @author ypqiao
*
*/
public class Decorativer implements Say {
private Say say;
public Decorativer( Say say ){
this.say = say;
}
@Override
public String say(String str) throws Exception {
StringBuilder sb = new StringBuilder();
sb.append(" 装饰开始 ");
sb.append("\n"+say.say(str));
sb.append(" \n装饰结束 ");
return sb.toString();
}
public Say getSay() {
return say;
}
public void setSay(Say say) {
this.say = say;
}
}
public class Test {
/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
Say sayHello = new SayHello();
Say decorativer = new Decorativer(sayHello);
String result = decorativer.say("karl");
System.out.println(result);
}
}