动态代理(尚硅谷。宋红康)

 代理类和被代理类 必须实现同一套接口。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

 

 

 

 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

// 接口
public interface Star {
void sing();
}


//目标对象
public class StarLiu implements Star {
@Override
public void sing() {
System.out.println("刘德华唱歌");
}
}
//代理对象
public class Agent {
private Star target;
public Agent(Star target) {
this.target = target;
}

public Object getAgent(){
return Proxy.newProxyInstance(target.getClass().getClassLoader(), target.getClass().getInterfaces(), new InvocationHandler() {
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
System.out.println("签订合同");
Object invoke = method.invoke(target,args);
return invoke;
}
});
}
}
// 测试类
public class ProxyTest {
@Test
public void test1(){
Agent agent = new Agent(new StarLiu());
Star star = (Star) agent.getAgent();
star.sing();

}
}

 

 



posted on 2020-12-28 15:52  张东东1  阅读(172)  评论(0)    收藏  举报