一个是真正的你要访问的对象(目标类),一个是代理对象,真正对象与代理对象实现同一个接口,先访问代理类再访问真正要访问的对象。
代理模式分为静态代理、动态代理。
静态代理是由程序员创建或工具生成代理类的源码,再编译代理类。所谓静态也就是在程序运行前就已经存在代理类的字节码文件,代理类和委托类的关系在运行前就确定了。
动态代理是在实现阶段不用关心代理类,而在运行阶段才指定哪一个对象。
IUSerDao.java
public interface IUserDao {
public void save();
}
UserDao.java
public class UserDao implements IUserDao{
@Override
public void save() {
System.out.println("保存User");
}
}
UserDaoProxy.java
public class UserDaoProxy implements IUserDao {
private IUserDao iUserDao;
public UserDaoProxy(IUserDao iUserDao){
this.iUserDao=iUserDao;
}
@Override
public void save() {
System.out.println("连接数据库");
iUserDao.save();//执行目标对象方法
System.out.println("关闭连接");
}
}
Main.java
public class Main {
public static void main(String args[]){
UserDao userDao=new UserDao();
UserDaoProxy userDaoProxy=new UserDaoProxy(userDao);
userDaoProxy.save();
}
}
168万+

被折叠的 条评论
为什么被折叠?



