11.13

实验14:代理模式

本次实验属于模仿型实验,通过本次实验学生将掌握以下内容: 

1、理解代理模式的动机,掌握该模式的结构;

2、能够利用代理模式解决实际问题。

 

[实验任务一]:婚介所

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

实验要求:

1、类图

 

 

2、源代码

①、MarriageAgency.java

package org.example.shiyanshisi;

public interface MarriageAgency {
    void findMatch(String person);
    void setAge(int age);
}

 

②、RealMarriageAgency.java

package org.example.shiyanshisi;

public class RealMarriageAgency implements MarriageAgency{
    @Override
    public void findMatch(String person) {
        System.out.println("婚介所正在为"+person+"寻找合适的对象");
    }

    @Override
    public void setAge(int age) {

    }
}

 

③、MarriageAgencyProxy.java

package org.example.shiyanshisi;

public class MarriageAgencyProxy implements MarriageAgency {
    private RealMarriageAgency realMarriageAgency = new RealMarriageAgency();
    private int age;

    @Override
    public void findMatch(String person) {
        if (isUnderage(this.age)) {
            System.out.println("对不起" + person + ",不能早恋");
        } else {
            realMarriageAgency.findMatch(person);
        }
    }

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

    private boolean isUnderage(int age) {
        return age < 18;
    }
}

 

④、Main.java

package org.example.shiyanshisi;

public class Main {
    public static void main(String[] args) {
        MarriageAgencyProxy proxy=new MarriageAgencyProxy();
        proxy.setAge(1);
        proxy.findMatch("刘雪超");
        proxy.setAge(18);
        proxy.findMatch("董茂欣");
    }
}

 

 

3、运行结果

 

 

posted @ 2024-11-13 23:22  七安。  阅读(2)  评论(0编辑  收藏  举报