Java静态代理模式
2018-05-17 本文已影响21人
dpengwang
静态代理模式
代理也就是一个人代替另一个人去做模式,在java里代理就是一个对象代另一个对象去执行它所拥有的方法。实质还是执行被代理对象的方法,如何进行代理?==》就是把被代理的对象作为参数传入到代理的内部,代理者的内部会自己调用被代理者的方法。
静态代理中代理者和被代理者都要实现相同的接口。
eg:
interface Marry{
public void getmarry();
}
class People implements Marry{
String name;
public People(String name) {
this.name =name;
}
@Override
public void getmarry() {
System.out.println(this.name+" will maryy today");
}
}
class WedingConpany implements Marry{
private People apeople;
public WedingConpany(People aPeople) {
this.apeople =aPeople;
}
@Override
public void getmarry() {
System.out.println("wedding company do some thing before wedding ");
apeople.getmarry();
System.out.println("wedding company do some thing after wedding");
}
}
public class StaticClientTets {
public static void main(String args[]){
Marry clientmarry = new WedingConpany(new People("jzm"));
clientmarry.getmarry();
}
}
如代码所示,结婚公司代people执行了getmarry的方法,并在people的getmarry前后添加了自己的输出。代理的好处就是可以增强代码的重用性,保证核心业务可以被重用。
采用代理模式可以有效的将具体的实现与调用方进行解耦,通过面向接口进行编码完全将具体的实现隐藏在内部。
动态代理
跟java反射有关,后续更新