```mermaid
classDiagram
MatchmakingService <|.. RealMatchmakingService
MatchmakingService <|.. MatchmakingProxy
class MatchmakingService {
+findPartner()
}
class RealMatchmakingService {
+findPartner()
}
class MatchmakingProxy {
-RealMatchmakingService realService
-int age
+MatchmakingProxy(int age)
+findPartner()
}
class Main {
+main(String[] args)
}
MatchmakingProxy --> RealMatchmakingService : uses
```
package Tutorial14;
// 接口:定义婚介所的功能
interface MatchmakingService {
void findPartner();
}
// 实际婚介所类,实现具体的找对象服务
class RealMatchmakingService implements MatchmakingService {
@Override
public void findPartner() {
System.out.println("提供婚介服务:帮助您找到合适的对象!");
}
}
// 代理类:在实际婚介所前添加年龄验证
class MatchmakingProxy implements MatchmakingService {
private RealMatchmakingService realService;
private int age;
public MatchmakingProxy(int age) {
this.age = age;
realService = new RealMatchmakingService();
}
@Override
public void findPartner() {
if (age < 18) {
System.out.println("对不起,不能早恋!");
} else {
realService.findPartner();
}
}
}
// 测试类:模拟用户访问婚介所
public class Main {
public static void main(String[] args) {
MatchmakingService proxy1 = new MatchmakingProxy(16);
proxy1.findPartner(); // 输出“对不起,不能早恋!”
MatchmakingService proxy2 = new MatchmakingProxy(20);
proxy2.findPartner(); // 输出“提供婚介服务:帮助您找到合适的对象!”
}
}