代理模式java代码示例
时间: 2023-07-03 10:04:36 浏览: 59
Java代理模式例子
代理模式是一种结构型设计模式,它为其他对象提供一种代理以控制对这个对象的访问。
下面是一个简单的 Java 代码示例,演示如何使用代理模式来保护敏感对象:
1. 首先,定义一个接口 `Person`,表示被代理对象的基本行为:
```java
public interface Person {
void introduce();
}
```
2. 然后,定义实现了 `Person` 接口的 `RealPerson` 类,它是要被代理的真正对象:
```java
public class RealPerson implements Person {
private String name;
public RealPerson(String name) {
this.name = name;
System.out.println("Creating real person: " + name);
}
@Override
public void introduce() {
System.out.println("Hi, my name is " + name);
}
}
```
3. 接下来,定义一个代理类 `ProxyPerson`,它实现了 `Person` 接口,并且持有一个 `RealPerson` 对象的引用:
```java
public class ProxyPerson implements Person {
private RealPerson realPerson;
public ProxyPerson(String name) {
this.realPerson = new RealPerson(name);
}
@Override
public void introduce() {
if (realPerson != null) {
realPerson.introduce();
} else {
System.out.println("Guest user, please login to use the system");
}
}
}
```
4. 最后,测试代码如下:
```java
public class TestProxyPattern {
public static void main(String[] args) {
Person person = new ProxyPerson("Alice");
person.introduce();
person = new ProxyPerson(null);
person.introduce();
}
}
```
该代码输出:
```
Creating real person: Alice
Hi, my name is Alice
Guest user, please login to use the system
```
在上面的示例中,`RealPerson` 类是真正的对象,`ProxyPerson` 类是代理。当我们调用 `ProxyPerson` 的 `introduce()` 方法时,它会检查是否有 `RealPerson` 对象的引用。如果有,它会调用 `RealPerson` 的 `introduce()` 方法;否则,它会输出一条消息,提示用户登录后使用系统。
阅读全文