1. 程式人生 > 其它 >轉行測試,11k入職,我寫了份1000多字的分享,每一筆都是經歷

轉行測試,11k入職,我寫了份1000多字的分享,每一筆都是經歷

動態代理:

  動態代理對比靜態代理,它可以自動生產代理物件和方法,就可以解決因為物件或者方法過多而浪費資源

//介面

public interface IUserService {
public abstract void add(User user);
public abstract int delete(int id);
}

//實現介面的類
public class UserService implements IUserService {
@Override
public void add(User user) {
System.out.println("執行了新增方法");

}

@Override
public int delete(int id) {
System.out.println("執行了刪除方法");
return 0;
}
}


//動態代理寫在test方法中
public class Test {
public static void main(String[] args) {
IUserService us = (IUserService) Proxy.newProxyInstance(
UserService.class.getClassLoader(),

UserService.class.getInterfaces(),
new InvocationHandler() {
@Override//代理物件----方法----引數
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
System.out.println(method+"---method");

Object invoke = method.invoke(new UserService(), args);
System.out.println(args);
return invoke;
}
}
);
us.add(new User());
us.delete(9);
}
}
動態代理在代理時,先呼叫
UserService的方法就先代理,這樣就可以避免自己手動建立代理物件和方法。