裝飾設計模式
將原類進行「裝飾」 將原類的功能進行增強。
對類進行功能增強 也可以使用繼承實現。
繼承與裝飾的區別。
例 乙個寫入流物件。 writer
下有兩個子類,乙個用於操作文字,乙個用於操作**。
|---textwriter |---mediawriter
若需要對操作效率進行提高,加入緩衝技術。
通過繼承技術進行功能擴充套件。需要對每個子類進行繼承擴充套件。
|---textwriter
|---mediawriter
|---bufferedtextwriter
|--bufferedmediawriter
這樣就通過繼承完成了功能擴充套件。
但是,如果又增加乙個操作圖形的類 gwriter 又會產生與上面相同體系的子類。
當不斷功能擴充套件,就會導致整個繼承體系越來越臃腫。
因此,可以使用裝飾設計模式
每個子類的功能擴充都是一樣的,都是加入緩衝技術,高效操作。
所以就將緩衝進行封裝,當哪個物件(text、media、g)需要緩衝,就將緩衝和具體的物件相結合。
class buffer extends writer
}---------writer w 多型,可以接受text、media、graph 等writer下的子類
裝飾後的體系為
writer
|---text
用於操作文字
|---media
用於操作**
|--graph
用於操作圖形
|---buffer
用於提高效率
裝飾比繼承更靈活
特點:裝飾類和被裝飾類必須同屬於乙個介面或父類。
java設計模式 裝飾設計模式
乙個例子 public class main 寫 介面 author admin inte ce coding author admin 基礎學生 class coderstudent implements coding author admin 碼農 對基礎學生寫 進行裝飾公升級 class co...
Java設計模式(裝飾設計模式)
作用 改寫已存在的類的某個方法或某些方法,裝飾設計模式 包裝模式 場景 datasource資料來源連線池,獲取connection後的close不能關閉,而是放入連線池中,就需要使用裝飾者設計模式 口訣 1 編寫乙個類,實現與被包裝類相同的介面。具備相同的行為 2 定義乙個被包裝類型別的變數。3 ...
Java 裝飾設計模式
裝飾設計模式是對已經存在的物件增加新的功能,相比繼承不會那麼臃腫 首先定義乙個介面,手機最基本的功能打 public inte ce mobile 定義抽象的裝飾類實現mobile介面 public abstract class mobiledecorate implements mobile ov...