代理模式分为静态代理和动态代理,动态代理又分为jdk代理和cglib代理,Spring就是基于cglib代理实现的,下面我们简单描述一下静态代理。
代理模式:不希望用户直接访问某个对象,而是通过其他对象访问该对象,这个其他对象就称为代理对象,这也就是代理模式。
代理模式构成:抽象主题,具体主题,代理
抽象主题:
package com.nantian.user.proxy.staticproxy;
public interface User {
void getUserName();
}
具体主题:
package com.nantian.user.proxy.staticproxy;
public class UserImpl implements User{
public void getUserName() {
System.out.println("李伟");
}
}
代理:
package com.nantian.user.proxy.staticproxy;
public class UserProxy implements User{
public void getUserName() {
System.out.println("获取用户名开始");
new UserImpl().getUserName();
System.out.println("获取用户名结束");
}
}
测试:
public static void main(String[] args) {
UserProxy proxy = new UserProxy();
proxy.getUserName();
}