package com.tlk.proxy;
/**
* java静态代理
* 步骤:
* 1.定义委托类Subject
* 2.定义实现类RealSubject
* 3.定义代理类Proxy
* 4.客户端调用
* Created by tanlk on 2017/8/16 16:33.
*/
public class ProxyTest {
interface Subject {
void request();
}
static class RealSubject implements Subject {
public void request(){
System.out.println("RealSubject");
}
}
static class Proxy implements Subject {
private Subject subject;
public Proxy(Subject subject){
this.subject = subject;
}
public void request(){
System.out.println("begin");
//调用实现类对应的方法
subject.request();
System.out.println("end");
}
}
public static void main(String args[]) {
//传入具体的实现类
Proxy p = new Proxy(new RealSubject());
p.request();
}
}
缺点
一个真实角色必须对应一个代理角色,但如果大量使用会导致类的急剧膨胀;此外,如果事先并不知道真实角色,该如何使用代理呢?这个问题可以通过Java的动态代理类来解决。