之前说了代理模式,即为其他对象提供一种代理以控制对这个对象的访问,详情见
这里以持久化层的数据交互类为例,IUserDao是与数据库进行交互的接口,UserDao为IUserDao接口的实现类,UserDaoProxy为代理类,二者皆实现了IUserDao接口。说具体点就是,UserDao类是IUserDao接口的具体实现者,而UserDaoProxy类是通过调用UserDao类的相关方法来提供特定服务的。
1. IUserDao接口
这里为抽象目标类/接口。
1 public interface IUserDao { 2 3 public void save(); 4 5 }
2. UserDao接口
这里为具体目标类或被代理的对象。实现了IUserDao中的接口方法。
1 public class UserDao implements IUserDao { 2 3 @Override 4 public void save() { 5 System.out.println("数据已保存!!!"); 6 } 7 8 }
3. 静态代理类
首先在静态代理类中引入IUserDao接口,通过调用UserDao类的相关方法来提供特定服务。
1 public class UserDaoProxy implements IUserDao { 2 3 private IUserDao iUserDao; 4 5 public UserDaoProxy(IUserDao iUserDao) { 6 this.iUserDao = iUserDao; 7 } 8 9 @Override 10 public void save() { 11 System.out.println("开始事务..."); 12 iUserDao.save(); //执行目标对象13 System.out.println("提交事务..."); 14 } 15 16 }

