/*
* 代理模式:代理类中有被代理类的成员变量,在调用真正的函数前后,可以做一些其他的行为,
*/
public class TestProxy {
public static void main(String[] args) {
IUserDao d = new MyDaoProxy(new MyDao());
d.Save();
}
}
interface IUserDao {
void Save();
}
class MyDao implements IUserDao{
@Override
public void Save() {
System.out.println("MyDao.Save()...");
}
}
class MyDaoProxy implements IUserDao{
private IUserDao userDao;
public MyDaoProxy(IUserDao userDao) {
super();
this.userDao = userDao;
}
@Override
public void Save() {
System.out.println("start...");
userDao.Save(); //调用被代理类的
System.out.println("end...");
}
}