結構型模式 4 裝飾模式Decorator

2021-10-01 03:49:34 字數 1885 閱讀 2399

裝飾(decorator):指在不改變現有物件結構的情況下,動態地給該物件增加一些職責(即增加其額外功能)的模式,它屬於物件結構型模式。

裝飾(decorator)模式的主要優點有:

其主要缺點是:裝飾模式增加了許多子類,如果過度使用會使程式變得很複雜。

公共特點:都可以增強方法的功能,同時也是開發過程中增強方法最常用的三種方式。

裝飾模式包含如下角色:

component: 抽象構件,定義乙個抽象介面以規範準備接收附加責任的物件。

concretecomponent: 具體構件,實現抽象構件,通過裝飾角色為其新增一些職責。

decorator: 抽象裝飾類,繼承抽象構件,幷包含具體構件的例項,可以通過其子類擴充套件具體構件的功能。

concretedecorator: 具體裝飾類 ,實現抽象裝飾的相關方法,並給具體構件物件新增附加的責任。

component: 抽象構件

package www.lxk.com;

public inte***ce car

concretecomponent: 具體構件

package www.lxk.com;

public abstract class cardecorator implements car

public void setcar(car car)

public cardecorator(car car)

public abstract void show();

}

decorator: 抽象裝飾類

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()

}

package www.lxk.com;

public class swimcardecorator extends cardecorator

public void show()

public void swim()

public void run()

}

concretedecorator: 具體裝飾類

package www.lxk.com;

public class mainclass

}

測試結果:

可以跑

---------

可以跑可以遊

---------

可以跑可以遊

可以飛

裝飾模式(結構型模式)

裝飾模式是一種動態的給類中新增新行為的設計模式,裝飾模式比生成子類更為靈活,可以給某個物件而不是整個類新增一些功能。值得注意的是裝飾模式的裝飾類也繼承介面類,同時他也有介面類的指標指向他需要裝飾的具體類。外表看著像is a的關係,實際也是has a的關係。實際應用中裝飾類可以同時裝飾幾個具體類。可以...

結構型模式 裝飾模式

裝飾模式是對類的組合進行的擴充。比如現在有個門,現在有一些額外功能,比如 新增鎖 貼春聯 門眼 門框全包 等功能,這些功能可以單獨存在,也可以兩兩組合等隨意組合。怎麼實現這樣的 門 呢.繼承 比如有 貼春聯 門眼 就新增乙個新類,這樣如果需要其他的功能就需要無窮多的子類。組合 加強版組合 裝飾模式 ...

結構型模式 裝飾模式(decorator)

1 裝飾模式 動態的給乙個物件新增一些額外的職責,就增加功能來說decorator模式相比生成子類更為靈活。要求裝飾物件和被裝飾物件實現同乙個介面,裝飾物件持有被裝飾物件的例項。例項一 public inte ce source public class sourcechild implements...