大話設計模式(二)

2021-06-21 22:13:28 字數 1141 閱讀 4301

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 單一職責原則 解釋可以為 就乙個類而言,應該僅有乙個引起它變化的原因。如果乙個類承擔的職責太多,就等於把這些職責耦合在一塊,乙個職責的變化可能會削弱或抑制這個類完完成其他的能力。這種耦合會導致脆弱的設計,當變化發生時,設計會遭到意想不到的破壞。軟體設計真正要做的許多內容,就算發現職責併發這些職責...