23种设计模式07—代理模式
实现相同的接口,持有要代理对象
package com.chb.Spring.dao;
import javax.annotation.Resource;
import org.springframework.stereotype.Repository;
import com.chb.Spring.model.User;
import com.chb.Spring.utils.MyLogger;
/**
* 静态代理
* 实现一个代理类:
* 代理类实现 所需要修改累的接口
* 注入一个对象, 通过这个对象进行修改的类操作,
* 并在实现方法内,添加所需要的信息
* 这个满足了开闭原则, 不用修改源代码
*/
@Repository("userProxyDao")
public class UserProxyDao implements IUserDao{
//注入一个IUSerDao对象, 并提供相应的getter setter方法
private IUserDao userDao;
public IUserDao getUserDao() {
return userDao;
}
@Resource//默认通过名称注入
public void setUserDao(IUserDao userDao) {
this.userDao = userDao;
}
public void add(User user) {
//添加的信息
MyLogger.info("添加了用户");
userDao.add(user);
}
public void delete(int id) {
MyLogger.info("删除了用户");
userDao.delete(id);
}
public void load(int id) {
MyLogger.info("加载了用户");
userDao.load(id);
}
}
在UserService中注入代理对象
//默认根据名称注入
@Resource(name="userProxyDao")
public void setUserDao(IUserDao userDao) {
this.userDao = userDao;
}
测试结果