23種設計模式之裝飾模式

2021-08-15 01:46:04 字數 2107 閱讀 6649

職責:動態的為乙個物件增加乙個新的功能

裝飾模式是乙個用於代替繼承的技術,無須通過繼承增加子類就能擴充套件物件的新功能,使用物件的關聯關係代替繼承關係,更加靈活,同時避免型別體系的快速膨脹。

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)

裝飾模式是一種物件結構型模式,可動態地給乙個物件增加一些額外的職責,就增加物件功能來說,裝飾模式比生成子類實現更為靈活。通過裝飾模式,可以在不影響其他物件的情況下,以動態 透明的方式給單個物件新增職責 當需要動態地給乙個物件增加功能,這些功能可以再動態地被撤銷時可使用裝飾模式 當不能採用生成子類的方...