裝飾(decorator):指在不改變現有物件結構的情況下,動態地給該物件增加一些職責(即增加其額外功能)的模式,它屬於物件結構型模式。
裝飾(decorator)模式的主要優點有:
其主要缺點是:裝飾模式增加了許多子類,如果過度使用會使程式變得很複雜。
公共特點:都可以增強方法的功能,同時也是開發過程中增強方法最常用的三種方式。
裝飾模式包含如下角色:
component: 抽象構件,定義乙個抽象介面以規範準備接收附加責任的物件。
concretecomponent: 具體構件,實現抽象構件,通過裝飾角色為其新增一些職責。
decorator: 抽象裝飾類,繼承抽象構件,幷包含具體構件的例項,可以通過其子類擴充套件具體構件的功能。
concretedecorator: 具體裝飾類 ,實現抽象裝飾的相關方法,並給具體構件物件新增附加的責任。
component: 抽象構件
concretecomponent: 具體構件package www.lxk.com;
public inte***ce car
decorator: 抽象裝飾類package www.lxk.com;
public abstract class cardecorator implements car
public void setcar(car car)
public cardecorator(car car)
public abstract void show();
}
package www.lxk.com;
public abstract class cardecorator implements car
public void setcar(car car)
public cardecorator(car car)
@override
public abstract void show();
}
package www.lxk.com;
public class runcar implements car
public void show()
}
concretedecorator: 具體裝飾類package www.lxk.com;
public class swimcardecorator extends cardecorator
public void show()
public void swim()
public void run()
}
測試結果:package www.lxk.com;
public class mainclass
}
可以跑---------
可以跑可以遊
---------
可以跑可以遊
可以飛
裝飾模式(結構型模式)
裝飾模式是一種動態的給類中新增新行為的設計模式,裝飾模式比生成子類更為靈活,可以給某個物件而不是整個類新增一些功能。值得注意的是裝飾模式的裝飾類也繼承介面類,同時他也有介面類的指標指向他需要裝飾的具體類。外表看著像is a的關係,實際也是has a的關係。實際應用中裝飾類可以同時裝飾幾個具體類。可以...
結構型模式 裝飾模式
裝飾模式是對類的組合進行的擴充。比如現在有個門,現在有一些額外功能,比如 新增鎖 貼春聯 門眼 門框全包 等功能,這些功能可以單獨存在,也可以兩兩組合等隨意組合。怎麼實現這樣的 門 呢.繼承 比如有 貼春聯 門眼 就新增乙個新類,這樣如果需要其他的功能就需要無窮多的子類。組合 加強版組合 裝飾模式 ...
結構型模式 裝飾模式(decorator)
1 裝飾模式 動態的給乙個物件新增一些額外的職責,就增加功能來說decorator模式相比生成子類更為靈活。要求裝飾物件和被裝飾物件實現同乙個介面,裝飾物件持有被裝飾物件的例項。例項一 public inte ce source public class sourcechild implements...