6.裝飾模式
動態地給乙個物件新增一些額外的職責,就增加功能來說,裝飾模式比生成子類更為靈活。
uml類圖關係:
(1)component物件抽象類——物件類
有乙個功能fun()
(2)decorator裝飾抽象類,繼承物件類(或物件抽象類)
提供乙個最重要的setcomponent(component com)方法,用來設定component;
override要被裝飾的物件類方法fun(),在裡面呼叫super.fun()
(3)裝飾具體類,繼承抽象裝飾類
override父類方法fun(),先呼叫super.fun(),然後可以新增自己的功能
把每個要裝飾的功能放在單獨的類中,並讓這個類包裝它要裝飾的物件,當需要執行特殊行為時,客戶端**就可以根據需要有選擇地、按順序地使用裝飾功能包裝物件。下面是乙個裝飾例子:
輸出結果://抽象物件類,可以給這些物件動態新增職責
abstract class component
// 乙個具體的物件,可以給這個物件新增職責(裝飾這個物件)
class concretecomponent extends component
}/**
* 抽象裝飾類,繼承component,在外面來擴充套件component類的功能,即裝飾它
* 在抽象裝飾類中,實現component的原功能;在繼承抽象裝飾類的子類中實現新新增的功能
*/abstract class decorator extends component
// 執行component的功能
@override
public void operation() }}
// 具體的裝飾物件,給component新增職責
class concretedecoratora extends decorator
}// 具體的裝飾物件,給component新增職責
class concretedecoratorb extends decorator
}public class decoratortest
}
裝飾該類
a中新增新功能
b中新增新功能
大話設計模式 筆記二
單一職責原則 單一職責原則 srp 對於乙個類而言,應該僅有乙個引起它變化的原因。通俗的說,乙個類只能幹乙個事,只能承擔乙個職責。如果乙個類承擔的職責過多,等於把這些職責耦合在一起,這種耦合會導致設計十分的脆弱,當變化發生的時候,會遭到意想不到的破壞。開放 封閉原則 開放封閉原則,簡稱開閉原則,指軟...
大話設計模式筆記(二) 策略模式
商場收銀軟體,營業員根據客戶所購買的商品單價和數量,向客戶收費。普通實現 created by callmedevil on 2019 6 1.public class normaltest 計算總價 param price 單價 param num 數量 return private static...
大話設計模式的學習(二)
1 單一職責原則 解釋可以為 就乙個類而言,應該僅有乙個引起它變化的原因。如果乙個類承擔的職責太多,就等於把這些職責耦合在一塊,乙個職責的變化可能會削弱或抑制這個類完完成其他的能力。這種耦合會導致脆弱的設計,當變化發生時,設計會遭到意想不到的破壞。軟體設計真正要做的許多內容,就算發現職責併發這些職責...