當想要對已有的物件進行功能增強時,可以定義類,將已有物件傳入,基於已有的功能,並提供加強功能.
那麼自定義的該類稱為裝飾類.
裝飾類通常會通過構造方法接收被裝飾的物件.
並基於被裝飾的物件的功能,提供更強的功能.
繼承實現的增強類和修飾模式實現的增強類有何區別?
繼承實現的增強類:
優點:**結構清晰,而且實現簡單
缺點:對於每乙個的需要增強的類都要建立具體的子類來幫助其增強,這樣會導致繼承體系過於龐大
class fu
} class zi extends fu
}
修飾模式實現的增強類:優點:內部可以通過多型技術對多個需要增強的類進行增強
缺點:需要內部通過多型技術維護需要增強的類的例項。進而使得**稍微複雜
例:---雖然不是很實際但例很清晰---------修飾設計模式---------
class person //需要增強的類
}
class superperson//1.自定義乙個增強person方法的類
public void superchifan()//3.增強吃飯的方法
}
class persondemo
}
設計模式 03 策略模式
策略模式 strategy pattern 1 策略模式的組成 抽象策略角色 策略類,通常由乙個介面或者抽象類實現 具體策略角色 包裝了相關的演算法和行為 環境角色 持有乙個策略類的引用,最終給客戶端呼叫的。2 策略模式的編寫步驟 1 對策略物件定義乙個公共介面。2 編寫策略類,該類實現了上面的公共...
設計模式 設計模式之工廠模式
工廠方法模式 建立模式 使用場景?作用?形態?場景 大量類似的實體類 要建立的實體類都是同一本質的東西 披薩 有部分類似功能 準備 烘烤 切法 實現方式不一樣 準備的材料不同 烘烤時間不同 切法不同 將繁瑣複雜的建立類的過程聚集在一起,有序清晰 把具體例項化的過程從客戶 中抽離 作用 1 將建立物件...
設計模式之模板設計模式
模板方法模式,定義乙個操作中的演算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以不改變乙個演算法的結構即可重新定義該演算法的某些特定步驟。模板方法模式是通過把不變行為搬到超類,去除子類中的重複 來體現它的優勢。當不變和可變的行為在方法的子類實現中混合在一起的時候,不變的行為就會在子類中重複...