定義
裝飾模式可以動態地給乙個物件新增一些額外的職責。
類圖
component
抽象構件
component
是乙個介面或者是抽象類,就是定義我們最核心的物件,也就是最原始的物件。
concretecomponent
具體構件
concretecomponent
是最核心、最原始、最基本的介面或抽象類的實現。
decorator
裝飾角色
一般是乙個抽象類,實現介面或者抽象方法,且屬性裡有乙個private
變數指向component
抽象構件。
concretedecorator
具體裝飾角色
concretedecorator
把最核心的、最原始的、最基本的東西裝飾成其他東西。
實現抽象構件:
package com.sigalhu.decoratorpattern;
public
abstract
class
component
具體構件:
package com.sigalhu.decoratorpattern;
public
class
concretecomponent
extends
component
}
抽象裝飾者:
package com.sigalhu.decoratorpattern;
public
abstract
class
decorator
extends
component
//委託給被修飾者執行
@override
public
void
operate()
}
具體的裝飾類:
package com.sigalhu.decoratorpattern;
public
class
concretedecorator1
extends
decorator
//定義自己的修飾方法
private
void
method1()
//重寫父類的方法
@override
public
void
operate()
}
package com.sigalhu.decoratorpattern;
public
class
concretedecorator2
extends
decorator
//定義自己的修飾方法
private
void
method2()
//重寫父類的方法
@override
public
void
operate()
}
場景類:
package com.sigalhu.decoratorpattern;
public
class
client
}
優點 缺點
多層的裝飾比較複雜,因此,儘量減少裝飾類的數量,以便降低系統的複雜度。
原始碼:
《設計模式之禪》讀書筆記 策略模式
策略模式 strategy pattern 定義一組演算法,將每個演算法都封裝起來,並且使他們之間可以互換。對於策略模式來說了解清楚它三個角色的作用,基本就差不多了。策略模式的三個角色 它也叫做上下文角色,起承上啟下封裝作用,遮蔽高層模組對策略 演算法的直接訪問,封裝可能存在的變化。策略 演算法家族...
《設計模式之禪》讀書筆記 21 狀態模式
定義 當乙個物件內在狀態改變時允許其改變行為,這個物件看起來像改變了其類。類圖 state抽象狀態角色 介面或抽象類,負責物件狀態定義,並且封裝環境角色以實現狀態切換。concretestate具體狀態角色 每乙個具體狀態必須完成兩個職責 本狀態的行為管理以及趨向狀態處理,通俗地說,就是本狀態下要做...
設計模式之禪讀書筆記 建立類模式
23種設計模式可以分為三大類.建立類,結構類,行為類.建立類模式 都能夠提供物件的建立和管理職責 單例模式 保持在記憶體中只有乙個物件 工廠方法模式 抽象工廠模式 建造者模式 原型模式 通過複製的方式產生乙個新的物件 單例模式 定義 確保單例類只有乙個例項,而且自行例項化並向整個系統提供這個例項.優...