10.4

软件设计                  石家庄铁道大学信息学院

 

实验14:代理模式

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

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

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

 
   

 


[实验任务一]:婚介所

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

实验要求:

1.     提交类图;

 

2. 提交源代码;

// 人员接口

interface Person {

    void findPartner();

}

 

// 客户类(需要找对象的人)

class Customer implements Person {

    private String name;

    private int age;

 

    public Customer(String name, int age) {

        this.name = name;

        this.age = age;

    }

 

    @Override

    public void findPartner() {

        System.out.println(name + "正在寻找伴侣。");

    }

 

    public int getAge() {

        return age;

    }

}

 

// 婚介所代理类

class MatchmakingAgencyProxy implements Person {

    private Person customer;

 

    public MatchmakingAgencyProxy(Person customer) {

        this.customer = customer;

    }

 

    @Override

    public void findPartner() {

        if (customer.getAge() < 18) {

            System.out.println("对不起,不能早恋!");

            return;

        }

        System.out.println("婚介所开始为 " + ((Customer) customer).getName() + " 寻找合适的伴侣。");

        customer.findPartner();

        System.out.println("婚介所帮助 " + ((Customer) customer).getName() + " 完成了寻找伴侣的过程。");

    }

}

 

public class Main {

    public static void main(String[] args) {

        // 创建一个16岁的客户

        Person customer1 = new Customer("小明", 16);

        Person proxy1 = new MatchmakingAgencyProxy(customer1);

        proxy1.findPartner();

 

        // 创建一个25岁的客户

        Person customer2 = new Customer("小红", 25);

        Person proxy2 = new MatchmakingAgencyProxy(customer2);

        proxy2.findPartner();

    }

}

3. 注意编程规范。

 

 

posted @ 2025-01-02 15:29  jais  阅读(10)  评论(0)    收藏  举报