1. 程式人生 > >代理模式和裝飾器模式的區別

代理模式和裝飾器模式的區別

代理模式和裝飾器模式, 包裝和實現都繼承自同一介面,形式比較像,但是其實它們的用途是各不相同的。

代理模式,隱藏了真實的處理者,裝飾模式需要客戶制定具體的處理者。

使用代理模式,代理和真實物件之間的的關係通常在編譯時就已經確定了,而裝飾者能夠在執行時遞迴地被構造。

//代理的客戶
public class Client{
        public static void main(String[] args){
             //客戶不知道代理委託了另一個物件
             Subject subject = new Proxy();
             …
        }
}
//裝飾器的客戶public class Client{
        public static void main(String[] args){
            //客戶指定了裝飾者需要裝飾的是哪一個類            Component component = new Decorator(new ConcreteComponent());
            …
        }
}