【設計模式學習筆記】裝飾器模式
阿新 • • 發佈:2019-01-08
裝飾器模式,顧名思義就是裝。人靠衣裝,馬靠鞍。天生一副臭皮囊,穿金戴銀之後,就顯得與眾不同於。裝飾器模式在不改變原來類結構的基礎上,對原來的類進行了擴充套件。並且這是一種弱耦合形式。
文章目錄
當我們生產一輛車的時候一開始,所有的車都是一副架子。但是加上不同的零件就是不同的車。
1.1 天生一副臭皮囊
package decorator; /************************************************ *@ClassName : CarModel *@Description : TODO *@Author : NikolaZhang *@Date : 【2018/12/9 0009 21:15】 *@Version : 1.0.0 *************************************************/ public abstract class CarModel { public abstract void look(); }
package decorator; /************************************************ *@ClassName : CarModel *@Description : TODO *@Author : NikolaZhang *@Date : 【2018/12/9 0009 21:15】 *@Version : 1.0.0 *************************************************/ public class BWMCarModel extends CarModel { @Override public void look() { System.out.println("鐵架子"); } }
1.2 人靠衣裝,車靠塗裝
package decorator;
/************************************************
*@ClassName : ModelDecoorator
*@Description : TODO
*@Author : NikolaZhang
*@Date : 【2018/12/9 0009 21:17】
*@Version : 1.0.0
*************************************************/
public abstract class ModelDecoorator {
protected CarModel carModel;
public abstract void look();
public ModelDecoorator(CarModel carModel) {
this.carModel = carModel;
}
}
package decorator;
/************************************************
*@ClassName : BWMDecorator
*@Description : TODO
*@Author : NikolaZhang
*@Date : 【2018/12/9 0009 21:19】
*@Version : 1.0.0
*************************************************/
public class BWMDecorator extends ModelDecoorator {
public BWMDecorator(CarModel carModel) {
super(carModel);
}
@Override
public void look() {
System.out.println("把原來的車拿出來。。。。");
carModel.look();
System.out.println("塗上炫酷噴漆");
}
}
1.3 亮個相
package decorator;
/************************************************
*@ClassName : Test
*@Description : TODO
*@Author : NikolaZhang
*@Date : 【2018/12/9 0009 21:25】
*@Version : 1.0.0
*************************************************/
public class Test {
public static void main(String[] args) {
ModelDecoorator modelDecoorator = new BWMDecorator(new BWMCarModel());
modelDecoorator.look();
}
}
1.4 你看到了啥
參考
【菜鳥教程】:http://www.runoob.com/design-pattern/decorator-pattern.html
本文原文地址:https://blog.csdn.net/baidu_30325009/article/details/85018626