静态代理
静态代理是一种常见的设计模式,它通过在代理对象中包含一个目标对象的引用,以在目标对象的基础上实现额外的功能。下面是一个简单的 Java 静态代理示例:
public interface UserService {
void saveUser(String username, String password);
}
public class UserServiceImpl implements UserService {
@Override
public void saveUser(String username, String password) {
System.out.println("保存用户信息:" + username);
}
}
public class UserServiceProxy implements UserService {
private UserService userService;
public UserServiceProxy(UserService userService) {
this.userService = userService;
}
@Override
public void saveUser(String username, String password) {
System.out.println("开始事务");
userService.saveUser(username, password);
System.out.println("提交事务");
}
}
public class Client {
public static void main(String[] args) {
UserService userService = new UserServiceImpl();
UserService proxy = new UserServiceProxy(userService);
proxy.saveUser("test", "123456");
}
}
在上述示例代码中,UserService 是一个接口,定义了保存用户信息的方法。UserServiceImpl 是一个实现了 UserService 接口的类,它实现了保存用户信息的具体逻辑。UserServiceProxy 是一个代理类,它实现了 UserService 接口,通过在 saveUser 方法中包含了目标对象 UserServiceImpl 的调用,以在目标对象的基础上实现了开启事务和提交事务的功能。在客户端代码中,首先创建了一个 UserServiceImpl 的对象,然后通过 UserServiceP