職責:動態的為乙個物件增加乙個新的功能
裝飾模式是乙個用於代替繼承的技術,無須通過繼承增加子類就能擴充套件物件的新功能,使用物件的關聯關係代替繼承關係,更加靈活,同時避免型別體系的快速膨脹。
component抽象控制項元件
concretecomponent具體構件角色(真實物件)
decorator裝飾角色
concretedecorator具體構件角色
1.定義component抽象控制項元件icar
//抽象元件構建
public
inte***ce icar
2.concretecomponent具體構件角色(真實物件)
//concretecomponent 具體構件角色(真實物件)
public
class
carimplements
icar
}
3.decortor裝飾角色
public
class
supercar
implements
icar
@override
public
void
move()
}
concretedecorator具體裝飾角色
public
class
flycar
extends
supercar
@override
public
void
move()
}
public
class
swimcar
extends
supercar
@override
public
void
move()
}
public
class
audiocar
extends
supercar
@override
public
void
move()
}
測試
car car=new car();
car.move();
system.out
.println("--------------新增新的功能天上飛--------------");
flycar flycar = new flycar(car);
flycar.move();
system.out
.println("--------------新增新的功能水上游--------------");
swimcar swimcar = new swimcar(car);
swimcar.move();
system.out
.println("--------------新增新的功能自動開天上飛--------------");
audiocar audiocar = new audiocar(new flycar(car));
audiocar.move();
總結
裝飾模式和橋接模式的區別
23種設計模式之裝飾模式
定義 動態的給乙個物件新增一些額外的職責.就增加功能來說,裝飾模式相比生成子類更為靈活.通俗的說,就是對乙個類或方法進行包裝 裝飾模式的通用類圖 類圖中的四個角色說明如下 component 抽象構件 component是乙個介面或抽象類,就是定義我們最核心的角色,也就是最原始的物件.在裝飾模式中,...
23種設計模式之裝飾者模式
今天我來向大家講解一下裝飾者模式,裝飾者模式的設計原則同樣也是對擴充套件開放,對修改關閉,那我們就有了乙個問題,如何做到對修改關閉,對擴充套件開放呢?我們都知道,裝飾者模式的定義是動態地將責任附加到物件中,其實裝飾者模式也可以說是動態巢狀的乙個過程。就比如舉例來說,假如我現在到乙個商店中買了一杯牛奶...
23種設計模式之裝飾模式(Decorator)
裝飾模式是一種物件結構型模式,可動態地給乙個物件增加一些額外的職責,就增加物件功能來說,裝飾模式比生成子類實現更為靈活。通過裝飾模式,可以在不影響其他物件的情況下,以動態 透明的方式給單個物件新增職責 當需要動態地給乙個物件增加功能,這些功能可以再動態地被撤銷時可使用裝飾模式 當不能採用生成子類的方...