裝飾器模式decorator

2021-09-14 08:36:01 字數 509 閱讀 1928

這個模式還是屬於結構模式。啥時候用呢。一般寫**都是定義乙個介面,然後給乙個預設實現就實現功能了。但是隨著功能修改,要在原有impl上要新增一些調整。這個時候你會怎麼做呢。直接改原impl的**麼。也許會。但是裝飾器模式會新增乙個裝飾類。

先看整個uml圖。然後解釋哪個才是裝飾類

首先display是介面。stringdisplay是最早的實現。sideborder才是裝飾類。裝飾模式一定是有了介面,有了實現impl。然後你的新類要注入乙個老impl。那有人就問了。那為啥不直接extends 老impl也可以修改啊。這就是關鍵所在了。看下sideborder幹了啥

看到沒有。裝飾類中只是借用老impl的方法做微調。 裝飾類跟老impl兩者的關係是兄弟姐妹。不是父子。

裝飾器模式 decorator

所有的說明和解釋都在 中有注釋來標明 package mode.decorator 這裡定義乙個介面,在介面中定義我們要執行的操作。以後所有的裝飾器以及我們要裝飾的物件都要實現這個介面。有了這樣的大前提,我們就可以其用 sourcable來定義我們的裝飾器和要裝飾的物件了 public inte c...

裝飾器模式 Decorator

設計原則 1 類應該對擴充套件開發,對修改關閉。特點 1 裝飾物件和真實物件有相同的介面。這樣客戶端物件就可以以和真實物件相同的方式和裝飾物件互動。2 裝飾物件包含乙個真實物件的引用 reference 3 裝飾物件接收所有來自客戶端的請求,它把這些請求 給真實的物件。4 裝飾物件可以在 這些請求之...

裝飾器模式(Decorator)

裝飾器模式的作用 動態地給乙個物件新增一些額外的職責,就增加功能來說,裝飾器模式比生成子類更加靈活。裝飾器模式結構圖 各個類或介面的職能 component是定義乙個物件介面,可以給這些物件增加功能。concretecomponent定義乙個具體的物件。decorator是裝飾抽象類,為物件增加功能...