基础
代理模式:
是什么
【静态代理】:由程序员创建或特定工具自动生成源代码,再对其编译。在程序运行前,代理类的.class文件就已经存在了。
【动态代理】:在程序运行时,运用反射机制动态创建而成。
上代码
未使用代理:
如果要在业务中加入日志记录功能,则需要修改业务类中的每个方法,破会了开闭原则:
public class UserManagerImpl implements UserManager {
@Override
public void addUser(String userId,String userName) {
//日志
System.out.println("start-->>addUser() userId-->>" + userId);
//业务:实际是调用Dao添加用户
System.out.println("添加用户");
//日志
System.out.println("success-->>addUser()");
}
@Override
public void deleteUser(String userId) {
//日志
System.out.println("start-->>deleteUser() userId-->>" + userId);
System.out.println("删除用户");
//日志
System.out.println("success-->>deleteUser()");
}
}
静态代理:
在使用了静态代理之后,添加日志的代码移到了代理中,避免了修改原有的业务类,符合开闭原则。客户端调用的具体实现类变成了代理类(这个在实际中可