今天要搞清楚的問題是為什麼需要上面那個被黃色框圈住的「抽象裝飾器類」。
裝飾器模式實現了不破壞原有類的情況下動態擴充套件乙個類的功能。
「為什麼需要抽象裝飾器類」,搞清楚這個問題最好的辦法是手寫乙個裝飾器模式,然後去掉中間的抽象裝飾器類,看看會發生什麼。
下面根據最上面的uml圖寫一下**:
// 頂層介面
public
inte***ce shape
下面是乙個提供了抽象裝飾器類的裝飾器類實現方式:
// 抽象裝飾器類
public
abstract
class
shapedecorator
implements
shape
public
void
draw()
public
void
f1()
public
void
f2()
}//乙個實際的裝飾器類
public
class
redshapedecorator
extends
shapedecorator
// 這個類只想增強一下draw()方法,不想變動其他的f1,f2方法,所以這個類只需要重寫這個類即可
public
void
draw()
private
void
setredborder(shape decoratedshape)
}
下面是乙個不提供抽象裝飾器類的裝飾器類實現方式:
//乙個實際的裝飾器類
public
class
redshapedecorator
implements
shape
public
void
draw()
private
void
setredborder(shape decoratedshape)
//這個類僅僅想增強draw方法,但是因為實現的是頂層介面,不得不重寫這個方法
public
void
f1()
//這個類僅僅想增強draw方法,但是因為實現的是頂層介面,不得不重寫這個方法
public
void
f2()
}
結論:從上面的**可以清晰的看出結果了,抽象裝飾器器類的存在簡化了真實裝飾器類的寫法。 python裝飾器作用 python裝飾器有什麼用
簡言之,python裝飾器就是用於拓展原來函式功能的一種函式,這個函式的特殊之處在於它的返回值也是乙個函式,使用python裝飾器的好處就是在不用更改原函式的 前提下給函式增加新的功能。一般而言,我們要想拓展原來函式 最直接的辦法就是侵入 裡面修改,例如 import time def func p...
裝飾器的作用
裝飾器本質上是乙個python函式。它可以讓其他函式在不需要做任何 變動的前提下增加額外功能,裝飾器的返回值也是乙個函式物件。它經常用於有切面需求的場景,比如 插入日誌 效能測試 事務處理 快取 許可權校驗等場景。概括的講,裝飾器的作用就是為已經存在的物件新增額外的功能 import time de...
裝飾器模式
大話設計模式 裝飾器模式 為已有功能動態地新增更多功能,當系統需要新功能,向舊的類中新增新功能,裝飾了原有類的核心職責和行為,而不改變它們 就像包裝袋一樣,有 的包裝袋包裝之前裝好東西的包裝袋 ifndef clothes h define clothes h include using names...