裝飾模式對新房進行裝修並沒有改變房屋的本質,但它可以讓房子變得更漂亮、更溫馨、更實用。
在軟體設計中,對已有物件(新房)的功能進行擴充套件(裝修)。
把通用功能封裝在裝飾器中,用到的地方進行呼叫。
裝飾模式是一種用於替代繼承的技術,使用物件之間的關聯關係取代類之間的繼承關係。引入裝飾類,擴充新功能。
角色抽象構件
具體構件
抽象裝飾類
具體裝飾類
1.元件類
package decorator; // 裝飾者模式2.元件裝飾者/** * created by jiqing on 2016/10/13.
*/abstract class component
package decorator;3.繼承類listbox/** * created by jiqing on 2016/10/13.
*/public class componentdecorator extends component
public void display()
}
package decorator;4.繼承類textbox/** * created by jiqing on 2016/10/13.
*/public class listbox extends component
}
package decorator;5.繼承類window/** * created by jiqing on 2016/10/13.
*/public class textbox extends component
}
package decorator;6.黑框裝飾者/** * created by jiqing on 2016/10/13.
*/public class window extends component
}
package decorator;7.滾動條裝飾者/** * created by jiqing on 2016/10/14.
*/public class blackboarderdecorator extends componentdecorator
public void display()
public void setblackboarder()
}
package decorator;8.客戶端呼叫/** * created by jiqing on 2016/10/14.
*/public class scrollbardecorator extends componentdecorator
public void display()
public void setscrollbar()
}
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 ...