設計模式 裝飾者模式

2021-10-04 07:34:02 字數 1341 閱讀 9271

通過委託機制,復用系統的各個元件,在執行時,將功能元件進行疊加,從而造成乙個【超級物件】,使其擁有所有元件功能,可以有效地分離效能元件和功能元件,從而提公升模組的可維護性並增加了模組的復用性

繼承:一種緊密耦合,任何父類的改動都會影響其子類,不利於系統維護

委託:鬆散耦合,只要介面不變,委託類的改動不會影響其上層物件

角色作用

元件介面

裝飾者和被裝飾者的超類或者介面,定義了被裝飾者的核心功能和裝飾者需要加強的功能點

具體元件

實現元件介面核心方法,完成具體業務邏輯,是被裝飾的物件

裝飾者實現元件介面,並持有乙個具體的被裝飾者物件

具體裝飾者

具體實現裝飾的業務邏輯,實現被分離的各個增強功能點,各個具體裝飾者可以相互疊加,從而構建成乙個功能更多的元件物件

元件介面:

public inte***ce ischoolreport
委託類:

負責告知子類,其業務邏輯應該全權委託 ir 完成,自己僅作增強處理

public abstract class schoolreportdecorator implements ischoolreport

public void outde()

}

具體元件(被裝飾者)
public class outputcardcreator implements ischoolreport 

}

裝飾者:輸出語文成績
public class chinesecreator extends schoolreportdecorator 

@override

public string outputreportcard()

}

裝飾者:輸出數學成績
public class mathcreator extends schoolreportdecorator 

@override

public string outputreportcard()

}

具體裝飾者:
public static void main(string args)
輸出結果:

jdk中有不少元件是用裝飾者模式實現的,最典型的例子就是outputstream和inputstream,outputstream物件提供的方法比較簡單,功能比較弱,但通過其他裝飾者(子物件)的加強後,它本身的功能也變得強大了

設計模式 裝飾者模式

public abstract class beverage public abstract double cost public abstract class condimentdecorator extends beverage public class darkroast extends be...

設計模式 裝飾者模式

沒什麼特別的,之前看懂了,這次自己再複述一下。畢竟把別人講懂了才是真的懂了。主要參考了head first 設計模式。例子講述的是在為星巴克咖啡的製作訂單的情況,比如客人點了飲料,那麼系統會自動算出 不知道是我沒有體會到,還是這個例子不太合適,算出 那麼簡單的事還需要用到類?不過不影響我們思考裝飾者...

設計模式 裝飾者模式

好幾天沒出部落格了,在學習android的一些新控制項的時候,用到了乙個模式,叫裝飾者模式,所以在此講講這個模式。模式,包含以下四個角色 1 抽象構件 component 角色 給出乙個抽象介面,以規範準備接收附加責任的物件。2 具體構件 concretecomponent 角色 定義乙個將要接收附...