1. 程式人生 > >4.代理者模式

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();

}

}