JAVA設計模式之 裝飾者模式

2021-09-22 11:07:58 字數 4127 閱讀 7632

裝飾模式    對新房進行裝修並沒有改變房屋的本質,但它可以讓房子變得更漂亮、更溫馨、更實用。    在軟體設計中,對已有物件(新房)的功能進行擴充套件(裝修)。    把通用功能封裝在裝飾器中,用到的地方進行呼叫。    裝飾模式是一種用於替代繼承的技術,使用物件之間的關聯關係取代類之間的繼承關係。引入裝飾類,擴充新功能。    角色        抽象構件        具體構件        抽象裝飾類        具體裝飾類
案例一,窗體裝飾

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.密文介面

package decorator.sample2;

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

*/public

inte***ce

cipher

// 密文介面

2.密文裝飾者

package decorator.sample2;

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

*/public

class

cipherdecorator

implements

cipher

public

string

encrypt

(string plaintext)

}

3.密文介面實現類

package decorator.sample2;

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

*/public

final

class

******cipher

implements

cipher

// 簡單密文繼承密文

if(c>='a'&&c<='z')

str+=c;

}return

str;}}

4.複雜加密裝飾者

package decorator.sample2;

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

*/public

class

complexcipher

extends

cipherdecorator

// 複雜密文

public

string

encrypt

(string plaintext)

public

string

reverse

(string text)

return

str;}}

5.先進加密裝飾者

package decorator.sample2;

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

*/public

class

advancedcipher

extends

cipherdecorator

public

string

encrypt

(string plaintext)

public

string

mod(string text)

return

str;}}

6.客戶端

package decorator.sample2;

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

*/public

class

client

}

執行結果

java設計模式之裝飾者模式

裝飾者模式 動態的將責任附加到物件上。若要擴充套件功能,裝飾者提供了比繼承更有彈性的替代方案。類圖 barbecue類 實現 package com.decorator public abstract class barbecue public abstract double cost fish類 ...

Java設計模式之裝飾者模式

設想乙個情景,假設有一家奶茶店,店裡面只賣飲料,不賣其他的東西,且飲料的品種只有兩種分別為coffee和milk,那麼為這家店的訂單系統可以簡單的設計為兩個類,coffee類和milk類。如果有一天,店裡面賣的飲料品種增加了很多種,這個時候我們可以發現飲料種類很多,但是每一類都可以抽象出類似的屬性和...

Java設計模式之裝飾者模式

裝飾者模式在保持原有結構不變的情況下,新建類 新增功能 去包裝原有的類。1.實體抽象類 public inte ce drink 2.具體例項實現 public class coffee implements drink override public string getdescription 3...