代理模式(静态)
1、定义:在原有类(原有物品)的基础上,增强了其功能,原有的类不动
2、为什么需要代理模式:有些类,我们不想或者不能改变他们的功能,动了反而不好,所以就需要用代理类来增强他们的功能
3、代理模式的种类:2种
(1.1)静态代理:
① 增加IDAO接口
② DeptDAO 实现IDAO接口
③ 代理商DaoProxy 实现IDAO接口
④ 使用的时候, 通过代理商的构造器传入
DeptDAO的实例。
⑤ 具体干活的时候, 调用代理类对应的方法就,干
活就可以了。
(1.2)静态代理必须满足的3个角色
① 抽象角色(IDAO)
② 代理类(DaoProxy)
③ 被代理的类(DeptDAO的实例)
(1.3)静态代理缺点:如果IDAO增加了一个或者多个方法,则代理类也需要相应的增加对应的方法。必须要重新修改代理类的代码。
(1.4)代码实例:
接口
点击查看代码
public interface IDAO {
public int save();
public int remove();
public int modify();
public int findAll();
}
点击查看代码
public class DeptDAO implements IDAO{
@Override
public int save() {
System.out.println("增加了一条 dept 的数据");
return 0;
}
@Override
public int remove() {
return 0;
}
@Override
public int modify() {
return 0;
}
@Override
public int findAll() {
return 0;
}
}
点击查看代码
public class EmpDAO implements IDAO{
@Override
public int save() {
System.out.println("增加了一条 emp 的数据");
return 0;
}
@Override
public int remove() {
return 0;
}
@Override
public int modify() {
return 0;
}
@Override
public int findAll() {
return 0;
}
}
点击查看代码
package com.bh.proxy;
import com.bh.dao.IDAO;
public class DaoProxy implements IDAO {
private IDAO rawDao;
public DaoProxy(IDAO rawDao){
this.rawDao = rawDao;
}
@Override
public int save() {
System.out.println("start============");
rawDao.save();
System.out.println("end==============");
return 0;
}
@Override
public int remove() {
return 0;
}
@Override
public int modify() {
return 0;
}
@Override
public int findAll() {
return 0;
}
}
点击查看代码
package com.bh.test;
import com.bh.dao.DeptDAO;
import com.bh.proxy.DaoProxy;
public class Test {
public static void main(String[] args) {
//IDAO deptDao = new DeptDAO();
//deptDao.save();
//IDAO empDao = new EmpDAO();
// empDao.save();
//使用代理类
DeptDAO deptDAO = new DeptDAO();
DaoProxy daoProxy = new DaoProxy(deptDAO);
daoProxy.save();
}
}
点击查看结果
start============
增加了一条 dept 的数据
end==============

浙公网安备 33010602011771号