Java动态代理
动态代理类实现InvocationHandler接口,利用反射机制,动态地生成代理对象及其调用方法。提高了代码的可扩展性和可维护性,更加符合OCP原则。
继续使用《Java静态代理》中的实例。
UserManager.java
/**
* 定义UserManager接口,包含对用户增删改查四个抽象方法
* @author Administrator
*
*/
public interface UserManager {
public void addUser(String username,String password);
public void deleteUser(int id);
public void modifyUser(int id,String username,String password);
public String findUserById(int id);
}
UserManagerImpl.java
SecurityHandler.java---实现InvocationHandler接口。
public class Client {

public static void main(String[] args) {
/*UserManager userManager = new UserManagerImpl();
userManager.addUser("zhangsan", "111");*/
UserManager userManager = (UserManager)new SecurityHandler().newProxy(
new UserManagerImpl());
userManager.addUser("zhangsan", "111");
}
}运行结果:
SecurityHandler.checkSecurity()...
UserManagerImpl.addUser()...
继续使用《Java静态代理》中的实例。
UserManager.java
/**
* 定义UserManager接口,包含对用户增删改查四个抽象方法
* @author Administrator
*
*/
public interface UserManager {
public void addUser(String username,String password);
public void deleteUser(int id);
public void modifyUser(int id,String username,String password);
public String findUserById(int id);
}
public class Client {
public static void main(String[] args) {
/*UserManager userManager = new UserManagerImpl();
userManager.addUser("zhangsan", "111");*/
UserManager userManager = (UserManager)new SecurityHandler().newProxy(
new UserManagerImpl());
userManager.addUser("zhangsan", "111");
}
}SecurityHandler.checkSecurity()...
UserManagerImpl.addUser()...

浙公网安备 33010602011771号