设计模式——代理模式

一、任务

婚介所

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

二、类图

 

三、代码

1、Java代码

 1 package tutorial14;
 2 
 3 import java.util.Scanner;
 4 
 5 public class Client {
 6 
 7     public static void main(String[] args) {
 8         // TODO 自动生成的方法存根
 9         
10         AbstractMatchMaking amm=new MatchMakingProxy();
11         System.out.println("*******欢迎来到婚介所*******");
12         System.out.println("您可以简单浏览一下我们的嘉宾信息....");
13         amm.viewInformation();
14         System.out.println("*******请登记一下您的基本信息*******");
15         System.out.println("您的年龄:");
16         Scanner in =new Scanner(System.in);
17         int age=in.nextInt();
18         amm.improveInformation(age);
19         if(age>=18) {
20             amm.postAnnouncement();
21         }
22         
23     }
24 
25 }
Client
1 package tutorial14;
2 
3 public interface AbstractMatchMaking {
4 
5     public void viewInformation();
6     public void postAnnouncement();
7     public void improveInformation(int age);
8 }
AbstractMatchMaking
 1 package tutorial14;
 2 
 3 public class MatchMaking implements AbstractMatchMaking{
 4 
 5     @Override
 6     public void viewInformation() {
 7         // TODO 自动生成的方法存根
 8         System.out.println("您正在浏览查看婚介对象基本信息");
 9     }
10 
11     @Override
12     public void postAnnouncement() {
13         // TODO 自动生成的方法存根
14         System.out.println("您发布了一条征婚启事,请注意查收结果消息");
15     }
16 
17     @Override
18     public void improveInformation(int age) {
19         // TODO 自动生成的方法存根
20         
21     }
22 
23 }
MatchMaking
 1 package tutorial14;
 2 
 3 public class MatchMakingProxy implements AbstractMatchMaking{
 4 
 5     private MatchMaking client=new MatchMaking();
 6     private int age=18;
 7     @Override
 8     public void viewInformation() {
 9         // TODO 自动生成的方法存根
10         System.out.println("您正在浏览查看婚介对象基本信息");
11         
12     }
13 
14     @Override
15     public void postAnnouncement() {
16         // TODO 自动生成的方法存根
17         if(age>=18) {
18             System.out.println("发布征婚启事");
19         }else if(age<18) {
20             System.out.println("对不起,不能早恋!");
21         }
22     }
23 
24     @Override
25     public void improveInformation(int age) {
26         // TODO 自动生成的方法存根
27         
28         this.age=age;
29         if(age<18) {
30             System.out.println("对不起,不能早恋!");
31         }else if(age>=18) {
32             System.out.println("信息登记完成......");
33         }
34     }
35 
36 }
MatchMakingProxy

2、C++代码

 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

四、结果

1、Java结果截图:

 

2、C++结果截图:

原文地址:https://www.cnblogs.com/Lizhichengweidashen/p/14204405.html