婚介所其实就是找对象的一个代理,请仿照我们的课堂例子“论坛权限控制代理”使用代理模式完成这个实际问题,其中如果年纪小于18周岁,婚介所会提示“对不起,不能早恋!”,并终止业务。
类图:

代码:
public interface MatchmakingService {
// 找对象方法(参数:用户姓名、年龄)
void findPartner(String name, int age);
}
// 2. 真实主题:实际的对象匹配服务
public class RealMatchmaker implements MatchmakingService {
@Override
public void findPartner(String name, int age) {
// 实际匹配逻辑
System.out.println("为" + name + "(" + age + "岁)匹配合适的对象...");
System.out.println("匹配成功!已为您推荐3位候选人。");
}
}
// 3. 代理:婚介所(负责权限控制)
public class MarriageAgencyProxy implements MatchmakingService {
// 持有真实主题的引用
private MatchmakingService realMatchmaker;
// 初始化时创建真实服务实例
public MarriageAgencyProxy() {
this.realMatchmaker = new RealMatchmaker();
}
@Override
public void findPartner(String name, int age) {
// 代理的核心逻辑:先进行年龄验证
if (age < 18) {
System.out.println("对不起," + name + "(" + age + "岁)不能早恋!");
return; // 终止业务
}
// 年龄符合条件,调用真实服务
realMatchmaker.findPartner(name, age);
}
}
// 4. 测试类
public class MarriageAgencyTest {
public static void main(String[] args) {
// 创建婚介所代理(用户只与代理交互)
MatchmakingService agency = new MarriageAgencyProxy();
// 测试1:未成年人
agency.findPartner("小明", 16);
// 输出:对不起,小明(16岁)不能早恋!
// 测试2:成年人
agency.findPartner("小红", 25);
// 输出:
// 为小红(25岁)匹配合适的对象...
// 匹配成功!已为您推荐3位候选人。
}
}
`
浙公网安备 33010602011771号