2024/11/13

软件设计 实验14:代理模式

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

 

public interface MarriageAgency {

    //修改个人信息
    public void modifyUserInfo();

    //查看他人信息
    public void lookOthersInfo();

    //设置年龄
    public void setAge(int age);
}

public class RealMarriageAgency implements MarriageAgency
{
    @Override
    public void modifyUserInfo() {
        System.out.println("修改个人信息");
    }

    @Override
    public void lookOthersInfo() {
        System.out.println("查看他人信息");
    }

    @Override
    public void setAge(int age) {

    }
}

public class MarriageAgencyProxy implements MarriageAgency{

    private MarriageAgency marriageAgency = new RealMarriageAgency();
    private int age = 18;

    //修改个人信息
    @Override
    public void modifyUserInfo()
    {
        if (age < 18)
        {
            System.out.println("对不起,不能早恋");
        } else if (age >= 18)
        {
            marriageAgency.modifyUserInfo();
        }
    }

    //查看他人信息
    @Override
    public void lookOthersInfo()
    {
        if (age < 18)
        {
            System.out.println("对不起,不能早恋");
        } else if (age >= 18)
        {
            marriageAgency.lookOthersInfo();
        }
    }

    //设置年龄
    @Override
    public void setAge(int age)
    {
        this.age = age;
    }

public class Main {
    public static void main(String[] args) {
        // 创建代理对象
        MarriageAgencyProxy agencyProxy = new MarriageAgencyProxy();

        // 测试年龄小于18岁
        System.out.println("测试年龄小于18岁:");
        agencyProxy.setAge(17); // 设置年龄为17
        agencyProxy.modifyUserInfo(); // 尝试修改个人信息
        agencyProxy.lookOthersInfo(); // 尝试查看他人信息

        System.out.println();

        // 测试年龄等于18岁
        System.out.println("测试年龄等于18岁:");
        agencyProxy.setAge(18); // 设置年龄为18
        agencyProxy.modifyUserInfo(); // 尝试修改个人信息
        agencyProxy.lookOthersInfo(); // 尝试查看他人信息

        System.out.println();

        // 测试年龄大于18岁
        System.out.println("测试年龄大于18岁:");
        agencyProxy.setAge(25); // 设置年龄为25
        agencyProxy.modifyUserInfo(); // 尝试修改个人信息
        agencyProxy.lookOthersInfo(); // 尝试查看他人信息
    }
}

 

posted @ 2024-11-13 09:18  伐木工熊大  阅读(13)  评论(0)    收藏  举报