代理一般用于给多个的类实现相同的方法,如记录日志、权限控制等等。普通代理的实现步骤如下:
一、定义接口
package com.casic.test.proxy;
public interface UserService {
/**
* 添加用户
*/
public void addUser();
/**
* 删除用户
*/
public void deleteUser();
/**
* 查询用户
*/
public void queryUsers();
}
二、接口实现
public class UserServiceImpl implements UserService {
public void addUser() {
System.out.println("添加 一个用户 ");
}
public void deleteUser() {
System.out.println("删除一个用户 ");
}
public void queryUsers() {
System.out.println("查询所有用户 ");
}
}
三、代理同样实现接口,并拥有一个接受接口对象的构造参数
public class UserServiceProxy implements UserService{
private UserService userService;
/**
* @param userService UserService 接口
*/
public UserServiceProxy(UserService userService) {
this.userService = userService;
}
public void addUser() {
System.out.println("------开始添加------");
userService.addUser();
System.out.println("------添加完成------");
}
public void deleteUser() {
System.out.println("------开始删除------");
userService.deleteUser();
System.out.println("------删除完成------");
}
public void queryUsers() {
System.out.println("------开始查询------");
userService.queryUsers();
System.out.println("------查询完成------");
}
}
四、代理调用
1.声明一个实现类对象,用接口形式声明
2.将声明的对象传入代理类,获得代理类的实现对象
package com.casic.test.proxy_1;
import org.junit.Test;
public class UserServiceTest {
@Test
public void test() {
UserService userService = new UserServiceImpl();
userService = new UserServiceProxy(userService);
userService.addUser();
}
}