11.26

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

  1. 提交类图;

  2. 提交源代码;


package proxy;

// 抽象婚介所接口
interface AbstractMatchmaking {
    void findPartner();
    void viewProfile();
    void setAge(int age);
}

// 真实婚介所类
class RealMatchmaking implements AbstractMatchmaking {
    @Override
    public void findPartner() {
        System.out.println("为您寻找合适的伴侣...");
    }

    @Override
    public void viewProfile() {
        System.out.println("查看其他用户的资料...");
    }

    @Override
    public void setAge(int age) {
        System.out.println("设置年龄为: " + age);
    }
}

// 婚介所代理类
class MatchmakingProxy implements AbstractMatchmaking {
    private RealMatchmaking matchmaking;
    private int age = 0;

    public MatchmakingProxy() {
        this.matchmaking = new RealMatchmaking();
    }

    @Override
    public void findPartner() {
        if (checkAge()) {
            matchmaking.findPartner();
        }
    }

    @Override
    public void viewProfile() {
        if (checkAge()) {
            matchmaking.viewProfile();
        }
    }

    @Override
    public void setAge(int age) {
        this.age = age;
        matchmaking.setAge(age);
    }

    private boolean checkAge() {
        if (age < 18) {
            System.out.println("对不起,不能早恋!");
            return false;
        }
        return true;
    }
}

// 客户端测试类
public class MarriageAgencyTest {
    public static void main(String[] args) {
        // 创建代理对象
        AbstractMatchmaking matchmaking = new MatchmakingProxy();
        
        // 测试未成年case
        System.out.println("=== 测试未成年用户 ===");
        matchmaking.setAge(16);
        matchmaking.findPartner();
        matchmaking.viewProfile();
        
        // 测试成年case
        System.out.println("\n=== 测试成年用户 ===");
        matchmaking.setAge(20);
        matchmaking.findPartner();
        matchmaking.viewProfile();
    }
}

  1. 注意编程规范。
posted @   aallofitisst  阅读(3)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示