软件设计 石家庄铁道大学信息学院
实验14:代理模式
本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:
1、理解代理模式的动机,掌握该模式的结构;
2、能够利用代理模式解决实际问题。
[实验任务一]:婚介所
婚介所其实就是找对象的一个代理,请仿照我们的课堂例子“论坛权限控制代理”完成这个实际问题,其中如果年纪小于18周岁,婚介所会提示“对不起,不能早恋!”,并终止业务。
实验要求:
1. 提交类图;
2. 提交源代码;
3. 注意编程规范。
1 #include <iostream>
2 #include <string>
3 using namespace std;
4
5 class Person
6 {
7 public:
8 virtual void findLove() = 0;
9 virtual void result(int age) = 0;
10 };
11
12 class Customer :public Person {
13 public:
14 void findLove() {
15 cout << "嘉宾1:27周岁 身高178cm 体重65kg 医生" << endl;
16 cout << "嘉宾2:32周岁 身高182cm 体重70kg 律师" << endl;
17 cout << "嘉宾3:26周岁 身高175cm 体重62kg 程序员" << endl;
18 }
19 void result(int age) {
20 if (age < 18) {
21 cout << "对不起,不能早恋!" << endl;
22 cout << "终止业务——————" << endl;
23 }
24 else if (age >= 18) {
25 cout << "已为您登记好信息...." << endl;
26 cout << "请等待匹配结果......" << endl;
27 }
28 }
29 };
30
31 //Proxy
32 class Intermediary :public Person
33 {
34 public:
35 Intermediary(Person* person) :m_Person(person) {}
36 void findLove()
37 {
38 cout << "*******欢迎来到婚介所*******" << endl;
39 cout << "您可以简单浏览一下我们的嘉宾信息...." << endl;
40 m_Person->findLove();
41 }
42 void result(int age) {
43 if (age < 18) {
44 cout << "对不起,不能早恋!" << endl;
45 cout << "终止业务——————" << endl;
46 }
47 else if (age >= 18) {
48 cout << "已为您登记好信息...." << endl;
49 cout << "请等待匹配结果......" << endl;
50 }
51 }
52 private:
53 Person* m_Person;
54 };
55
56 //场景
57 int main()
58 {
59 Person* xiaoM = new Customer;
60 Person* intermediary = new Intermediary(xiaoM);
61 intermediary->findLove();
62 cout << "*******请登记一下您的基本信息*******" << endl;
63 cout << "您的年龄:" << endl;
64 int age;
65 cin >> age;
66 intermediary->result(age);
67
68 return 0;
69 }
Client
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统