package 裝飾設(shè)計(jì)模式;
/*裝飾設(shè)計(jì)模式
* 當(dāng)想要對(duì)已有的對(duì)象進(jìn)行功能增強(qiáng)時(shí)。
* 可以定義類,將已有對(duì)象傳入,基于已有的功能,并提供加強(qiáng)功能。
* 那么自定義的該類成為裝飾類。
* 裝飾類通常會(huì)通過構(gòu)造方法接受被裝飾的對(duì)象。
* 并基于被裝飾的對(duì)象的功能,提供更強(qiáng)的功能。
*
*
* 裝飾模式比繼承要靈活,避免了繼承體系臃腫
* 而且降低了類與類之間的關(guān)系
*
* 裝飾類因?yàn)樵鰪?qiáng)已有對(duì)象,具備的功能和已有的是相同的,只不過提供了更強(qiáng)的功能
* 所以裝飾類和被裝飾類通常都屬于一個(gè)體系中
*
*/
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 裝飾設(shè)計(jì)模式;
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");
}
}