設計模式之裝飾者模式

2022-08-24 12:15:11 字數 1860 閱讀 2434

裝飾模式

對新房進行裝修並沒有改變房屋的本質,但它可以讓房子變得更漂亮、更溫馨、更實用。

在軟體設計中,對已有物件(新房)的功能進行擴充套件(裝修)。

把通用功能封裝在裝飾器中,用到的地方進行呼叫。

裝飾模式是一種用於替代繼承的技術,使用物件之間的關聯關係取代類之間的繼承關係。引入裝飾類,擴充新功能。

角色抽象構件

具體構件

抽象裝飾類

具體裝飾類

1.元件類

package decorator; // 裝飾者模式

/** * created by jiqing on 2016/10/13.

*/abstract class component

2.元件裝飾者

package decorator;

/** * created by jiqing on 2016/10/13.

*/public class componentdecorator extends component

public void display()

}

3.繼承類listbox

package decorator;

/** * created by jiqing on 2016/10/13.

*/public class listbox extends component

}

4.繼承類textbox

package decorator;

/** * created by jiqing on 2016/10/13.

*/public class textbox extends component

}

5.繼承類window

package decorator;

/** * created by jiqing on 2016/10/13.

*/public class window extends component

}

6.黑框裝飾者

package decorator;

/** * created by jiqing on 2016/10/14.

*/public class blackboarderdecorator extends componentdecorator

public void display()

public void setblackboarder()

}

7.滾動條裝飾者

package decorator;

/** * created by jiqing on 2016/10/14.

*/public class scrollbardecorator extends componentdecorator

public void display()

public void setscrollbar()

}

8.客戶端呼叫

package decorator; // 裝飾者模式

/** * created by jiqing on 2016/10/14.

*/public class client

}

執行結果

為構件增加滾動條!

顯示窗體!

--------------------

為構件增加黑色邊框!

為構件增加滾動條!

顯示窗體!

設計模式之 裝飾者模式

一 裝飾者模式 裝飾者模式又稱為包裝模式。動態地給乙個物件增加新的職責。若要擴充套件功能,裝飾者提供了比繼承更有彈性的替代方案。裝飾者模式顧名思義就是對乙個物件進行裝飾,具體怎樣裝飾呢?那就是給這個物件不斷的增加職責方法。給乙個物件增加方法不簡單啊,用繼承或者直接在物件的類中增加方法。如果我們要對自...

設計模式之裝飾者模式

此模式動態將職責附加到物件上,若要擴充套件功能,裝飾者提供了比繼承更具彈性的代替方案,以一圖一概括。要點1 裝飾者和被裝飾物件有相同的超型別。2 可以用乙個或多個裝飾者包裝乙個物件。3 裝飾者可以在所委託被裝飾者的行為之前或之後,加上自己的行為,以達到特定的目的。4 物件可以在任何時候被裝飾,所以可...

設計模式之裝飾者模式

public abstract class beverage 返回當前飲品的 public abstract double cost 為了讓condiment decorator 調料裝飾者 能夠取代beverage,所以將它擴充套件至beverage類 public abstract class ...