java 23種設計模式--代理模式
阿新 • • 發佈:2018-12-20
代理模式
為其他物件提供一種代理以控制對此物件的訪問
- Subject類:定義了RealSubject類和proxy類共同的介面,這樣就可以在任何使用RealSubject的地方都可以使用proxy;
public interface Subject{
/**
*
*說話的方法
*/
void talk();
}
- RealSubject類: 定義Proxy所代表的真實實體
public class RealSubject implements Subject{
@Override
public void talk(){
System. out.println("override method")
}
}
- Proxy類,儲存一個引用使得代理可以訪問實體類,並提供一個與subject介面相同的介面,這樣代理類就可以代替實體類
public class Proxy{
private RealSubject subject;
public Proxy(RealSubject subject){
this.subject = subject;
}
if( subject == null ){
subject = new RealSubject();
}
@Override
public void talk(){
subject.talk();
}
}
- 客戶端程式碼
public class TestProxy{
public static void main(String[] args){
Proxy proxy = new Proxy();
proxy.talk();
}
}
代理模式應用場景
-
遠端代理:也就是為一個物件在不同的地址空間提供區域性代表。這樣可以隱藏一個物件存在於不同地址空間的事實。
-
虛擬代理: 根據需要建立開銷很大的物件,通過它來存放需要例項化很長的物件。
-
安全代理: 用來控制真實物件訪問時的許可權
-
只能指引: 是指當呼叫真實的物件時,代理處理另外一些事。
本文只介紹代理模式的結構和實現方法,後期會更新JDK的靜態代理和動態代理。