什么是 java 目标类和代理类,能用代码举出具体例子吗
时间: 2024-11-09 13:22:13 浏览: 4
在Java中,目标类(Target Class)是指实际包含业务逻辑或功能的类,它是需要被代理的对象。而代理类(Proxy Class),则是为了增强或修改目标类的行为而在运行时创建的一个类,它通常用于访问控制、性能监控、事务管理等场景。
代理模式是一种设计模式,通过为某一个对象提供一个可以延迟的额外行为的机会,而这个机会在原始对象上是不可见的。例如,Spring框架中的AOP(面向切面编程)就是利用代理类来注入切面逻辑的。
下面是一个简单的例子:
```java
// 定义目标类,代表某个资源服务
class RealService {
public void doSomething() {
System.out.println("Doing something...");
}
}
// 创建代理类,用于添加日志记录等操作
class LoggingProxy implements RealService {
private RealService realService;
public LoggingProxy(RealService service) {
this.realService = service;
}
@Override
public void doSomething() {
System.out.println("Start doing something...");
realService.doSomething();
System.out.println("End doing something...");
}
}
public class Main {
public static void main(String[] args) {
// 创建目标服务实例并通过代理包装
RealService service = new RealService();
RealService proxy = new LoggingProxy(service);
// 调用代理的方法,实际上是调用了目标类的方法,并经过了代理的行为
proxy.doSomething();
}
}
```
在这个例子中,`LoggingProxy`就是代理类,它实现了`RealService`接口,并在`doSomething`方法中添加了自己的行为。当我们在`main`方法中调用`proxy.doSomething()`时,实际上是在执行被代理的操作的同时也包含了日志记录的功能。
阅读全文