JDK静态代理需要3个部分:
1、需要一个接口,代理类和被代理类要实现同一个接口;
2、被代理类,实现1中的接口,并实现接口中方法,在方法中完成自己的功能;
3、代理类,实现1中的接口,实例化2中的被代理类,实现接口方法时,调用被代理类的实现,并扩展自己的功能;
1、业务接口
/**
* 业务接口
* @author Muscleape
*
*/
public interface UserService {
// 增加一个用户
public void addUser();
// 编辑账户
public void editUser();
}
2、被代理类(业务实现类)
/**
* 业务实现类
* @author Muscleape
*
*/
public class UserServiceImpl implements UserService {
public void addUser() {
System.out.println("增加一个用户。。。");
}
public void editUser() {
System.out.println("编辑一个用户。。。");
}
}
3、代理类
/**
* 代理类
*
* @author Muscleape
*
*/
public class UserServiceProxy implements UserService {
private UserServiceImpl userImpl;
public UserServiceProxy(UserServiceImpl countImpl) {
this.userImpl = countImpl;
}
public void addUser() {
System.out.println("代理类方法,进行了增强。。。");
System.out.println("事务开始。。。");
// 调用委托类的方法;
userImpl.addUser();
System.out.println("处理结束。。。");
}
public void editUser() {
System.out.println("代理类方法,进行了增强。。。");
System.out.println("事务开始。。。");
// 调用委托类的方法;
userImpl.editUser();
System.out.println("事务结束。。。");
}
}
4、测试
public static void main(String[] args) {
UserServiceImpl userImpl = new UserServiceImpl();
UserServiceProxy proxy = new UserServiceProxy(userImpl);
proxy.addUser();
System.out.println("----------分割线----------");
proxy.editUser();
}
5、测试结果
代理类方法,进行了增强。。。
事务开始。。。
增加一个用户。。。
处理结束。。。
----------分割线----------
代理类方法,进行了增强。。。
事务开始。。。
编辑一个用户。。。
事务结束。。。

807

被折叠的 条评论
为什么被折叠?



