4.代理者模式
代理模式:代理模式和裝飾器模式結構很像,裝飾器模式關注於在一個物件上動態的新增方法,然而代理模式關注於控制對物件的訪問。換句話說,用代理模式,代理類(proxy class)可以對它的客戶隱藏一個物件的具體資訊。因此,當使用代理模式的時候,我們常常在一個代理類中建立一個物件的例項。但當我們使用裝飾器模式的時候,我們通常的做法是將原始物件作為一個引數傳給裝飾者的構造器
重點:代理模式重在於對方法的控制,新增行為對於使用者是被動的;裝飾模式重在於裝飾方法,增加方法的功能,新增裝飾對於使用者是主動的(代理模式物件類中建立,裝飾模式物件是客戶端傳進來)
/**
* 代理模式:
* 關鍵:
* Subject介面 (代理著和真實者 有共同的介面)
* RealSubject類 :實現了Subject介面
* Proxy類:擁有RealSubject的引用,並呼叫其介面中的方法
* @author zbl
*
*/
public class ProxyCustomer {
public static void main(String[] args) {
Proxy proxy = new Proxy();
proxy.request();
}
}
interface Subject{
public void request();
}
class RealSubject implements Subject{
@Override
public void request() {
System.out.println("xixi");
}
}
class Proxy implements Subject{
private RealSubject realSubject;
@Override
public void request() {
if(realSubject==null)
realSubject = new RealSubject();
realSubject.request();
}
}