裝飾設計模式
概述:
動態的給一個對象添加一些額外的職責,就增加功能來說,Decorator模式相比生成子類更爲靈活。
類型:
結構型模式。
當想要對已有的對象進行功能增強時,
可以定義類,將已有對象傳入,基於已有的功能,並提供加強功能。
那麼自定義的該類稱爲裝飾類。
裝飾類通常會通過構造方法接收被裝飾的對象。
並基於被裝飾的對象的功能,提供更強的功能
裝飾模式比繼承要靈活。避免了繼承體系臃腫。
而且降低了類於類之間的關係。
裝飾類因爲增強已有對象,具備的功能和已有的是相同的,只不過提供了更強功能。
所以裝飾類和被裝飾類通常是都屬於一個體系中的。
class Person
{
public void chifan()
{
System. out.println("吃飯" );
}
}
class SuperPerson
{
private Person p ;
SuperPerson(Person p) {
this.p =
p;
}
public void superChifan()
{
System. out.println("開胃酒" );
p.chifan();
System. out.println("甜點" );
System. out.println("來一根" );
}
}
public class Ts {
public static void main(String[]
args) {
Person p = new Person();//先有人
// p.chifan();
SuperPerson sp = new SuperPerson(p);//把我傳進去
sp.superChifan();
}
}