package 裝飾設計模式;
/*裝飾設計模式
* 當想要對已有的對象進行功能增強時。
* 可以定義類,將已有對象傳入,基于已有的功能,并提供加強功能。
* 那么自定義的該類成為裝飾類。
* 裝飾類通常會通過構造方法接受被裝飾的對象。
* 并基于被裝飾的對象的功能,提供更強的功能。
*
*
* 裝飾模式比繼承要靈活,避免了繼承體系臃腫
* 而且降低了類與類之間的關系
*
* 裝飾類因為增強已有對象,具備的功能和已有的是相同的,只不過提供了更強的功能
* 所以裝飾類和被裝飾類通常都屬于一個體系中
*
*/
public class PersonDemo {
public void chifan() {
System.out.println("吃飯");
}
public static void main(String[] args) {
// TODO Auto-generated method stub
PersonDemo p = new PersonDemo();
// p.chifan();
SuperPerson sp = new SuperPerson(p);
sp.superChiFan();
}
}
///////////////////////////////
package 裝飾設計模式;
public class SuperPerson {
private PersonDemo p;
public SuperPerson(PersonDemo p) {
// TODO Auto-generated constructor stub
this.p = p;
}
public void superChiFan() {
// TODO Auto-generated method stub
System.out.println("開胃酒");
// System.out.println("吃飯");
p.chifan();
System.out.println("smoking");
}
}