什么是代理
代理,字面意思,帮忙做,是一种增强。
代理的名称
代理对象:增强后的对象
目标对象:被增强的对象
静态代理
静态代理在使用时,需要定义接口或父类,被代理对象与代理对象一起实现相同的接口或者是继承相同的父类
继承(class类)
目标对象
public class UserDaoImpl {
public void login(String name){
System.out.println(name+" login success");
}
}
代理对象
public class LoginUserProxy extends UserDaoImpl {
@Override
public void login(String name) {
System.out.println("打印日志");
super.login(name);
}
}
public class test {
public static void main(String[] args) {
UserDao proxy = new LoginUserProxy();
proxy.login("aaa");
}
}
代理对象继承目标对象,重写目标对象的方法
聚合(接口)
抽象对象
public interface UserDao {
public void login(String name);
}
目标对象
public class UserDaoImpl implements UserDao {
@Override
public void login(String name) {
System.out.println(name+" login success ");
}
}
代理对象
public class LoginUserProxy implements UserDao {
public UserDao userDao;
public LoginUserProxy(UserDao userdao){
this.userDao=userdao;
}
@Override
public void login(String name) {
System.out.println("log...");
userDao.login(name);
}
}
public class test {
public static void main(String[] args) {
UserDao proxy = new UserDaoImpl();
UserDao loginUserProxy = new LoginUserProxy(proxy);
loginUserProxy.login("aaa");
}
}
目标对象和代理对象实现同一个接口,并且代理对象当中包含抽象对象
动态代理
以后再补