裝飾模式:裝飾模式以對客戶端透明的方式擴展對象的功能,是繼承關系的一個替代方案,提供比繼承更多的靈活性。動態給一個對象增加功能,這些功能可以再動態的撤消。增加由一些基本功能的排列組合而產生的非常大量的功能。
它最經典的特征就是:
1.必須有一個它自己的父類為自己的成員變量;
2.必須繼承公共父類。
public interface Component {
public void methodA();
}
public class ConcreteComponent implements Component {
public void methodA() {
//do somthing...
}
}
public class Decorator implements Component {
private Component c;
public Decorator(Component c) {
this.c = c;
}
public void methodA() {
//do sth.
c.methodA();
//do sth.
}
}
下面這個例子來自Head First,收藏
http://www.aygfsteel.com/sterning/archive/2008/01/21/176679.html