何为代理
代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式.现实生活中最典型的例子是明星与经纪人之间的关系,明星主要负责表演节目,其他的琐事则通过经纪人来代理实现.
静态代理
静态代理在使用时,
- 需要定义接口或者父类
被代理对象与代理对象一起实现相同的接口或者是继承相同父类
举个例子:
/**
* 接口
*/
interface IUserDao {
void save();
}
/**
* 接口实现
* 目标对象
*/
class UserDao implements IUserDao {
public void save() {
System.out.println("----UserDao 输出!----");
}
}
创建静态代理类
/**
* 代理对象,静态代理
*/
class StaticUserDaoProxy implements IUserDao {
//接收保存目标对象
private IUserDao target;
public StaticUserDaoProxy(IUserDao target) {
this.target = target;
}
public void save() {
System.out.println("before StaticUserDaoProxy...");
target.save();//执行目标对象的方法
System.out.println("after StaticUserDaoProxy...");
}
}
测试代码:
UserDao target = new UserDao();
//静态代理
StaticUserDaoProxy staticUserDaoProxy = <