软件设计 石家庄铁道大学信息学院
实验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. 注意编程规范。