代理类的问题!

yuanye2008 2006-03-14 03:36:59
UserDAOProxy和UserDaoImpl都实现接口UserDAO,并重写saveUser()方法
在UserDAOProxy的saveUser()方法中调用UserDAO.saveUser(),
如何确定调用那个类(UserDAOProxy和UserDAOImpl都有saveUser()方法)中saveUser()方法?

//-- interface UserDAO
public interface UserDAO
{
public void saveUser(User user);
}

//-- class UserDAOImpl
public class UserDAOImpl implements UserDAO
{
public void saveUser(User user){
user.setName();
...
...
//do some things as you like
}
}

//-- class UserDAOProxy proxy class UserDAO
public class UserDAOProxy implements UserDao
{
private UserDAO userDAO;

UserDAOProxy( UserDAO userDAO){
this.userDAO = userDAO;
}

public void saveUser(User user){
UserTransaction text = null;
try{
tx = (UserTransaction)(new InitialContext().lookup("java/tx"));
userDAO.saveUser(user); // 系统怎么知道调用那个类的saveUser?因为 UserDAOProxy自身和UserDAOImpl都有saveUser()方法!
tx.commit();
}catch(Exception ex){
;
}
}

};

...全文
96 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
treeroot 2006-03-14
  • 打赏
  • 举报
回复
你用的是什么就是什么了!
//一般情况
UserDao userDao=new UserDaoImpl();
userDao.saveUser(xxxx);

//一次代理
UserDao userDaoProxy=new UserDaoProxy(userDao);

//二次代理
UserDao userDaoProxy2=new UserDaoProxy(userDaoProxy);

//.... 没有限制
整个过程都是调用了UserDaoImpl,不过代理了几层而已,当然代理还可以做其他的事
yuanye2008 2006-03-14
  • 打赏
  • 举报
回复
没有人懂吗?
idilent 2006-03-14
  • 打赏
  • 举报
回复
userDAO.saveUser(user); 你的userDAO是那个类的实例就调用那个saveUser。典型的多态。
idilent 2006-03-14
  • 打赏
  • 举报
回复
用那个new的,就调用谁的呀。
yuanye2008 2006-03-14
  • 打赏
  • 举报
回复
我知道这是静态代理!我不是想问spring!
我只想知道函数是如何调用,调用那个类的函数!


treeroot 2006-03-14
  • 打赏
  • 举报
回复
真无聊呀,使用静态代理!

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧