初識設計模式 結構型之裝飾器

2022-07-09 12:24:08 字數 1021 閱讀 8053

裝飾器模式是通過組合加繼承的方式,動態的為業務類新增功能的一種設計模式,在這種設計模式之下,只需要新增乙個新的裝飾器,即可為業務類新增乙個新的功能,首先對裝飾器進行一次抽象,相比於單單組合的方式,這樣可以減少**複雜程度

我們以炒菜為場景,現在我們沒有洗菜和裝盤的情景,直接上手做菜

public

abstract

class

abstractdecorator

public

class

food : abstractdecorator

}public

class

basedecorator : abstractdecorator

public

override

void

makefood()

}public

class

fooddecorator : basedecorator

public

override

void

makefood()

//////

擴充套件的功能

/// public

void

befor()

//////

擴充套件的功能

/// public

void

after()

}#region 裝飾器模式abstractdecorator food = new

food();

food = new

fooddecorator(food);

food.makefood();

#endregion

我們在food裝飾器中加了額外的一層邏輯,做到了不修改原有的封裝,增加擴充套件功能。這也是一種aop的實現思路,在方法的前後增加東西。

優點:靈活,擴充套件性好,能夠在不影響業務類的前提下,動態的為其新增本身不存在的功能

缺點:為了靈活擴充套件增加了中間層,也帶來維護的複雜度

結構型設計模式 裝飾器模式

說明 裝飾器模式 decorator pattern 允許 向乙個現有的物件新增新的功能,同時又不改變其結構 這種型別的設計模式屬於結構型模式,它是作為現有的類的乙個包裝。這種模式建立了乙個裝飾類,用來包裝原有的類,並在保持類方法簽名完整性的前提下,提供了額外的功能。實現方法 1.新建乙個介面 pu...

結構型設計模式之裝飾模式

定義 動態地給乙個物件增加一些額外的職責,就增加物件功能來說,裝飾模式比生成子類更靈活 實現 1 抽象構建類 public inte ce transform 2 具體構建類 public final class car implememts transform public void move 3...

PHP 裝飾器模式 結構型設計模式

動態地為類的例項新增功能,一層一層的套功能 先定義好介面 inte ce booking 這個就是裝飾器實現了booking,通過建構函式傳遞booking物件進來 abstract class bookingdecorator implements booking 這個類直接實現booking c...