interface Worker{
public void doSomeWork();
}
public class MuJiang implements Worker{
public void doSomeWork(){
System.out.println("修門窗。");
}
}
public class ShuiGuanGong implements Worker{
public void doSomeWork(){
System.out.println("修水管兒。");
}
}
class AWorker implements Worker{
public Worker wk;
public AWorker(Worker wk){
this.wk= wk;
}
public void doSomeWork(){
System.out.println("來自A公司:");
wk.doSomeWork();
}
}
class BWorker implements Worker{
private Worker wk;
public BWorker(Worker wk){
this.wk=wk;
}
public void doSomeWork(){
System.out.println("B公司的:");
wk.doSomeWork();
}
}
public class AskForHelp{
public static void main (String args[]){
MuJiang mj=new MuJiang();
AWorker aw=new AWorker(mj);
aw.doSomeWork();
ShuiGuanGong sgg=new ShuiGuanGong();
BWorker bw=new BWorker(sgg);
bw.doSomeWork();
}
}
在上面的例子中,MuJiang 和ShuiGuanGong 是被裝飾對象,AWorker 和BWorker 是裝飾對象。在處理流中,BufferedReader 就是裝飾對象,FileReader 是被裝飾對象。