11.13

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

 

实验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 << "嘉宾127周岁 身高178cm 体重65kg 医生" << endl;

16         cout << "嘉宾232周岁 身高182cm 体重70kg 律师" << endl;

17         cout << "嘉宾326周岁 身高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

posted @   秋渡晚枫  阅读(3)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
点击右上角即可分享
微信分享提示