設計模式 裝飾者模式

2021-09-28 13:33:19 字數 1482 閱讀 2266

裝飾者模式是指在不改變原有的物件的基礎上,將功能附加到物件上,提供了比繼承更有彈性的解決方案,屬於結構模型

裝飾者模式適用於以下場景

1.擴充套件乙個類的功能或給乙個類新增附加職責

2.動態的給物件新增功能,這些功能可以動態的撤銷

下面進行舉例

建立基礎類

public class member 

public void setusername(string username)

public string getpassword()

public void setpassword(string password)

public string getmid()

public void setmid(string mid)

public string getinfo()

public void setinfo(string info)

}public class resultmsg

public int getcode()

public void setcode(int code)

public string getmsg()

public void setmsg(string msg)

public object getdata()

public void setdata(object data)

}

建立service介面

public inte***ce isigninservice
對service介面進行實現

public class singinservice implements isigninservice 

@override

public resultmsg login(string username, string password)

}

建立介面繼承原介面

public inte***ce isigninforthirdservice extends isigninservice
然後建立實現類對擴充套件介面進行實現這就是裝飾者模式

和介面卡模式相比

介面卡模式,乙個適配允許通常因為介面不相容而不能在一起工作的類工作在一起,做法是將類自己的介面包裹在乙個已存在的類中。

裝飾器模式,原有的不能滿足現有的需求,對原有的進行增強。

裝飾者模式的優缺點

裝飾者模式的優點

1.裝飾者模式是對繼承的有力補充,且比繼承靈活,可以在不改變原有物件的情況下動態的給乙個物件擴充套件功能

2.使用不同的裝飾類及這些裝飾類的排列組合,可以呈現不同的效果

3.裝飾者模式完全符合開閉原則

裝飾者模式的缺點

1.會出現更多的**更多的類,增加程式的複雜性

2.動態裝飾時,多層裝飾會更複雜

設計模式 裝飾者模式

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 角色 定義乙個將要接收附...