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{
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;
}
测试结果
问题: 就是静态代理的问题, 如果要代理的过多, 导致代理类爆炸式增长, 导致类过多。