JAVA的23種設計模式 裝飾模式

2021-08-01 16:18:27 字數 3615 閱讀 3028

1.該文章闡述了裝飾模式的基礎原理及示例**;

2.該文章適合初學設計模式的技術人員研習;

3.該文章有許多不足之處,請各位大咖指正,噴子繞道;

裝飾模式:動態的給一些物件新增一些額外的職責,就增加功能來說,裝飾模式相比生成子類更為靈活。

1.裝飾模式示例**實現:

package com.csdn;

/** * 毛坯房

*@author administrator

* */

public

inte***ce

roughhouse

package com.csdn;

/** * 基礎裝修完成了的房子

*@author administrator

* */

public

class

implements

roughhouse

//房主的裝修通過確認簽字

@override

public

void

sign(string name)

}

package com.csdn;

/** * 裝飾類(可理解為**類)

*@author administrator

* */

public

abstract

class

decorator

implements

roughhouse

@override

public

void

renovationreport()

@override

public

void

sign(string name)

}

package com.csdn;

/** * 用花做裝飾

*@author administrator

* */

public

class

flowerdecorator

extends

decorator

//用花做裝飾

public

void

decoratewithflowers()

@override

public

void

renovationreport()

}

package com.csdn;

/** * 用空氣淨化器做裝飾

*@author administrator

* */

public

class

aircleanerdecorator

extends

decorator

//用空氣淨化器做裝飾

public

void

decoratewithaircleaner()

@override

public

void

renovationreport()

}

package com.csdn;

/** * 模擬戶主收房簽字

*@author administrator

* */

public

class

householdersignclient

}

輸出:

房間的基礎裝修都已經完成

屋子裡擺上花

屋子裡放上空氣淨化器

戶主簽名:小明

注:

a:本示例模擬了房子的裝修過程,毛坯房在基本裝修完成後,裝修隊覺得這樣直接交給戶主不好看,所以用花和空氣淨化器給房子做了裝飾,戶主接收基礎裝修完成並裝飾過後的房子,非常開心的籤了字。

b:裝飾模式包含了抽象構件、具體構件、裝飾角色、具體裝飾角色

c:裝飾模式可以理解為一種特殊的**模式

2.通用裝飾模式模板**實現:

package com.csdn;

/** * 抽象構件

*@author administrator

* */

public

abstract

class

component

package com.csdn;

/** * 具體構件

*@author administrator

* */

public

class

concretecomponent

extends

component

}

package com.csdn;

/** * 抽象裝飾者

*@author administrator

* */

public

abstract

class

decorator

extends

component

//委託給被修飾者執行

@override

public

void

operate()

}

package com.csdn;

/** * 具體裝飾類1

*@author administrator

* */

public

class

concretedecorator1

extends

decorator

//定義自己的修飾方法

private

void

method1()

//重寫父類的方法

@override

public

void

operate()

}

package com.csdn;

/** * 具體裝飾類2

*@author administrator

* */

public

class

concretedecorator2

extends

decorator

//定義自己的修飾方法

private

void

method2()

//重寫父類的方法

@override

public

void

operate()

}

package com.csdn;

/** * 場景類

*@author administrator

* */

public

class

client

}

Java設計模式 裝飾者模

裝飾者模式,其實不難理解,簡單地說就是裝飾者和被裝飾者擁有共同的超類,裝飾者只是豐富了行為,拓展了功能,而型別是不變的。說起來可能比較抽象,接下來通過乙個簡單的例子來實現乙個裝飾者模式。動態的給乙個物件新增一些額外的職責或者功能,就增加功能來說,裝飾者模式相比生成子類更為靈活。大多數情況下被裝飾者不...

23種設計模式 裝飾者設計模式

23種設計模式之一,英文叫decorator pattern,又叫包裝模式。裝飾模式是在不必改變原類檔案和使用繼承的情況下,動態地擴充套件乙個物件的功能。裝飾物件和真實物件有相同的介面。裝飾物件包含乙個真實物件的引用。裝飾物件接受所有來自客戶端的請求。它把這些請求 給真實的物件 裝飾物件可以在 這些...

Java23種設計模式之裝飾者模式

描述 動態的給物件新增一些額外的屬性或行為。相比於使用繼承,裝飾者模式更加靈活。也就是如果想對已經存在的物件進行裝飾,那麼就定義乙個類,在類中對已經有的物件進行功能的增強或新增另外的行為,這個類就叫裝飾者類,被修飾的類叫被裝飾者類,是已經存在有的功能。在裝飾者類之間又可以互相裝飾。要實現裝飾者模式,...