设计模式(结构型模式)——装饰模式(Decorator)
生活随笔
收集整理的這篇文章主要介紹了
设计模式(结构型模式)——装饰模式(Decorator)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
2019獨角獸企業重金招聘Python工程師標準>>>
顧名思義,裝飾模式就是給一個對象增加一些新的功能,而且是動態的,要求裝飾對象和被裝飾對象實現同一個接口,裝飾對象持有被裝飾對象的實例,關系圖如下:
Source類是被裝飾類,Decorator類是一個裝飾類,可以為Source類動態的添加一些功能,代碼如下:
public interface Sourceable { public void method(); } public class Source implements Sourceable { @Override public void method() { System.out.println("the original method!"); } } public class Decorator implements Sourceable { private Sourceable source; public Decorator(Sourceable source){ super(); this.source = source; } @Override public void method() { System.out.println("before decorator!"); source.method(); System.out.println("after decorator!"); } } public class DecoratorTest { public static void main(String[] args) { Sourceable source = new Source(); Sourceable obj = new Decorator(source); obj.method(); } }輸出:
before decorator!
the original method!
after decorator!
裝飾器模式的應用場景:
1、需要擴展一個類的功能。
2、動態的為一個對象增加功能,而且還能動態撤銷。(繼承不能做到這一點,繼承的功能是靜態的,不能動態增刪。)
缺點:產生過多相似的對象,不易排錯!
轉載于:https://my.oschina.net/u/1431757/blog/714713
總結
以上是生活随笔為你收集整理的设计模式(结构型模式)——装饰模式(Decorator)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: textarea内容有换行时存入数据库丢
- 下一篇: iOS之应用偏好设置