Java設計模式6-結構型-裝飾模式

裝飾模式就是給一個對象增加一些新的功能,而且是動態的,要求裝飾對象和被裝飾對象實現同一個接口,裝飾對象持有被裝飾對象的實例

1、代碼演示

Source類是被裝飾類,Decorator類是一個裝飾類,可以爲Source類動態的添加一些功能
    a.被裝飾類的接口:
        public interface Sourceable {  
            public void method();  
        } 

    b.被裝飾類Source:
        public class Source implements Sourceable {  

            @Override  
            public void method() {  
                System.out.println("the original method!");  
            }  
        }  

    c.裝飾類Decorator:
        public class Decorator implements Sourceable {  
            private Sourceable source;  

            public Decorator(Sourceable source){  
                this.source = source;  
            }  

            //給之前的對象增加新的功能
            @Override  
            public void method() {  
                System.out.println("before decorator!");  
                source.method();  
                System.out.println("after decorator!");  
            }  
        }

    d.測試類:
        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!

2、裝飾器模式的應用場景:

1、需要擴展一個類的功能。

2、動態的爲一個對象增加功能,而且還能動態撤銷。(繼承不能做到這一點,繼承的功能是靜態的,不能動態增刪。)

缺點:產生過多相似的對象,不易排錯!
發佈了108 篇原創文章 · 獲贊 39 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章