2024.11.13
设计模式实验十四
软件设计 石家庄铁道大学信息学院
实验14:代理模式
本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:
1、理解代理模式的动机,掌握该模式的结构;
2、能够利用代理模式解决实际问题。
[实验任务一]:婚介所
婚介所其实就是找对象的一个代理,请仿照我们的课堂例子“论坛权限控制代理”完成这个实际问题,其中如果年纪小于18周岁,婚介所会提示“对不起,不能早恋!”,并终止业务。
实验要求:
1. 提交类图;
2. 提交源代码;
// AbstractMatchMaking.java
public abstract class AbstractMatchMaking {
public abstract void viewInformation();
public abstract void postAnnouncement();
public abstract void improveInformation(int age);
}
// MatchMaking.java
public class MatchMaking extends AbstractMatchMaking {
@Override
public void viewInformation() {
System.out.println("Viewing information.");
}
@Override
public void postAnnouncement() {
System.out.println("Posting announcement.");
}
@Override
public void improveInformation(int age) {
System.out.println("Improving information for age: " + age);
}
}
// MatchMakingProxy.java
public class MatchMakingProxy extends AbstractMatchMaking {
private MatchMaking client = new MatchMaking();
private int age;
public MatchMakingProxy(int age) {
this.age = age;
}
@Override
public void viewInformation() {
client.viewInformation();
}
@Override
public void postAnnouncement() {
client.postAnnouncement();
}
@Override
public void improveInformation(int age) {
if (age < 18) {
System.out.println("对不起,不能早恋!");
} else {
client.improveInformation(age);
}
}
}
// Client.java
public class Client {
public static void main(String[] args) {
MatchMakingProxy proxy1 = new MatchMakingProxy(16);
proxy1.viewInformation();
proxy1.postAnnouncement();
proxy1.improveInformation(16);
MatchMakingProxy proxy2 = new MatchMakingProxy(20);
proxy2.viewInformation();
proxy2.postAnnouncement();
proxy2.improveInformation(20);
}
}
3. 注意编程规范。