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