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

类图:

Java代码:

public abstract class Center
{
protected String name;
public Center(String name){this.name=name;}
public abstract void findlove(Person person);
} public class Marry extends Center
{
public Marry(String name){super(name);}
public void findlove(Person person)
{
if(person.getAge()<18)
{
System.out.println(name+":"+person.getName()+",对不起!不能早恋!");
}
else if(person.getAge()<100)
{
System.out.println(name+":"+person.getName()+",我们会为您找到合适的伴侣!");
}
else
{
System.out.println(name+":"+person.getName()+",对不起!您年龄太大了!");
}
}
} public class Person {
protected String name;
protected int age; public Person(String name,int age)
{
this.name=name;
this.age=age;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
}
} public class Client
{
public static void main(String args[])
{
Center center1,center2;
center1=new Marry("婚介");
center2=new Marry("婚介");
Person b1=new Person("喜羊羊",29);
Person b2=new Person("美羊羊",16);
center1.findlove(b1);
center2.findlove(b2);
} }

C++代码:

#include <iostream>
#include <string>
using namespace std; class Person
{
public:
string name;
int age;
Person(string n,int a)
{
name=n;
age=a;
}
}; class Center
{
protected:
string name;
public:
Center(string n){name=n;}
virtual void findlove(Person* person)=0;
}; class Marry:public Center
{
public:
Marry(string name):Center(name){}
void findlove(Person* person)
{
if(person->age<18)
{
cout <<name<<":"<<person->name<<",对不起!不能早恋!" << endl;
}
else if(person->age<100)
{
cout <<name<<":"<<person->name<<",我们会为您找到合适的伴侣!" << endl;
}
else
{
cout <<name<<":"<<person->name<<",对不起!您年龄太大了!" << endl;
}
}
}; int main()
{
Center* center1,* center2;
center1=new Marry("婚介");
center2=new Marry("婚介");
Person* b1=new Person("喜羊羊",29);
Person* b2=new Person("美羊羊",16);
center1->findlove(b1);
center2->findlove(b2);
return 0;
}

运行结果:

Java/C++实现代理模式---婚介所的更多相关文章

  1. 说说Java中的代理模式

    今天看到传智播客李勇老师的JDBC系列的第36节——通过代理模式来保持用户关闭连接的习惯.讲的我彻底蒙蔽了,由于第一次接触代理模式,感到理解很难,在博客园找到一篇文章,先记录如下: 引用自java设计 ...

  2. 谈谈Java中的代理模式

    首先来看一下代理模式的定义:为其他对象提供一种代理以控制对这个对象的访问.在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用, 其特征是代理类与 ...

  3. (转)轻松学,Java 中的代理模式及动态代理

    背景:讲到反射机制,肯定会想到动态代理. 轻松学,Java 中的代理模式及动态代理 代理模式可以在不修改被代理对象的基础上,通过扩展代理类,进行一些功能的附加与增强.值得注意的是,代理类和被代理类应该 ...

  4. Java设计模式之代理模式(静态代理和JDK、CGLib动态代理)以及应用场景

    我做了个例子 ,需要可以下载源码:代理模式 1.前言: Spring 的AOP 面向切面编程,是通过动态代理实现的, 由两部分组成:(a) 如果有接口的话 通过 JDK 接口级别的代理 (b) 如果没 ...

  5. Java设计模式:代理模式(转)

    代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能.这里使用到编程中的一 ...

  6. java设计模式6——代理模式

    java设计模式6--代理模式 1.代理模式介绍: 1.1.为什么要学习代理模式?因为这就是Spring Aop的底层!(SpringAop 和 SpringMvc) 1.2.代理模式的分类: 静态代 ...

  7. Java设计模式之代理模式(Proxy)

    前言: 最近在研究Retrofit开源框架的时候,其主要核心代码是通过注解标示参数,动态代理模式实现具体接口,反射机制进行参数解析,最终实现发送请求.其实之前在学习Xutils源码的时候,Xutils ...

  8. java设计优化--代理模式

    代理模式使用代理对象完成用户的请求,屏蔽用户对真实对象的访问. 代理模式的用途很多,比如因为安全原因,需要屏蔽客户端直接访问真实对象:或者在远程调用中,需要使用代理对象处理远程方法中的技术细节:或者为 ...

  9. Java设计模式 之 代理模式

    所谓的代理模式就是为其它类或对象提供一个代理以控制对这个对象的访问.那么常见的代理有远程代理,虚拟代理,保护代理,智能代理. 1. 远程代理:为一个不同地址空间的对象提供一个本地代理对象. 2. 虚拟 ...

随机推荐

  1. Chapter05 流程控制(Process Control)

    目录 Chapter05 流程控制 5.1 顺序控制 5.2 分支控制 if-else 单分支基本语法: 双分支基础语法: 多分支基础语法 5.3 嵌套分支 5.4 switch分支结构 5.5 Fo ...

  2. HarmonyOS UI组件在线预览,程序员直呼“不要太方便~”

    一.介绍 以往大家如果想查看组件的使用效果,需要打开DevEco Studio构建工程.现在为了便于大家高效开发,文档上线了JS UI组件在线预览功能,无需本地构建工程,在线即可修改组件样式等参数.一 ...

  3. linux基本篇--入门成神之路

    一.linux基础操作 1.初识bash shell概念  shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口,他接受用户输入的命令并把它送入内核去执行,实际上shell是一个命令解释 ...

  4. egg中使用sequelize事务,实现原子性

    let transaction; try { // 建立事务对象 transaction = await this.ctx.model.transaction(); const house = awa ...

  5. Java案例——字符串中的数据排序

    需求:有一个字符串"9 1 2 7 4 6 3 8 5 0",请编写程序实现从小到大数据排序 分析:最重要的部分是如何将字符串中的数据取出来 1.定义一个字符串为"9 1 ...

  6. 使用 Docker 部署 LNMP 并搭建 wordpress

    准备 系统版本:CentOS Linux release 7.4.1708 (Core)   内核版本:3.10.0-693.el7.x86_64    IP:192.168.31.43    可访问 ...

  7. Linux移植到自己的开发板(四)问题汇总

    @ 目录 1 使ubuntu支持两个版本的编译链: 2 版本问题: 3 ubuntu版本的vscode下载网速太慢: 4 ubuntu占用空间过大 5 执行make zImage 出错 lzop: n ...

  8. 6月21日 Django ORM那些相关操作(表关联、聚合查询和分组查询)

    一.ForeignKey操作 正向查找 对象查找(跨表) 语法: 对象.关联字段.字段   示例: book_obj = models.Book.objects.first() # 第一本书对象 pr ...

  9. 74cms v4.2.1-v4.2.129-后台getshell漏洞复现

    0x00 影响范围 v4.2.1-v4.2.129 0x01 环境搭建 1. 先去官网下载 骑士人才系统基础版(安装包) 2.将下载好的包进行安装 0x02 复现过程 当前版本v4.2.111 点加工 ...

  10. metinfo 6.0 任意文件读取漏洞

    一. 启动环境 1.双击运行桌面phpstudy.exe软件 2.点击启动按钮,启动服务器环境 二.代码审计 1.双击启动桌面Seay源代码审计系统软件 2.点击新建项目按钮,弹出对画框中选择(C:\ ...