• 设计模式——代理模式


    一、任务

    婚介所

    婚介所其实就是找对象的一个代理,请仿照我们的课堂例子论坛权限控制代理完成这个实际问题,其中如果年纪小于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++结果截图:

  • 相关阅读:
    K
    CFileDialog的用法
    MFC编辑框换行实现
    MFC通过对话框窗口句柄获得对话框对象指针
    AfxGetMainWnd()函数用法
    this指针和m_hWnd的区别
    WinAPI: FindWindow、FindWindowEx
    深入浅出Hibernate(二)多对一关系映射
    JAVA 并发编程-读写锁之模拟缓存系统(十一)
    很easy的js双向绑定框架(二):控制器继承
  • 原文地址:https://www.cnblogs.com/Lizhichengweidashen/p/14204405.html
Copyright © 2020-2023  润新知