设计模式--结构型

news2024/11/24 0:14:40

请添加图片描述

类适配器

#include <queue>
#include <iostream>
#include <algorithm>
#include <iterator>

using namespace std;

// 目标接口
class Target
{
  public:
    virtual ~Target() {}
    virtual void method() = 0;
};

// 适配者类
class Adaptee
{
  public:
    void spec_method()
    {
        std::cout << "spec_method run" << std::endl;
    }
};

// 类适配器
class Adapter : public Target, public Adaptee
{
  public:
    void method() override
    {
        std::cout << "call from Adapter: " << std::endl;
        spec_method();
    }
};

int main(int argc, char** argv)
{
    Adaptee adaptee;
    adaptee.spec_method();
    
    std::cout << std::endl;

    Adapter adapter;
    adapter.method();

    return 0;
}

对象适配器

#include <queue>
#include <iostream>
#include <algorithm>
#include <iterator>

using namespace std;

// 目标接口
class Target
{
  public:
    virtual ~Target() {}
    virtual void method() = 0;
};

// 适配者类
class Adaptee
{
  public:
    void spec_method()
    {
        std::cout << "spec_method run" << std::endl;
    }
};

// 类适配器
class Adapter : public Target
{
  public:
    Adapter(Adaptee* adaptee)
        : adaptee_{adaptee}
    {
    }

    void method() override
    {
        std::cout << "call from Adapter: " << std::endl;
        adaptee_->spec_method();
    }

  private:
    Adaptee* adaptee_;
};

int main(int argc, char** argv)
{
    Adaptee adaptee;
    adaptee.spec_method();

    std::cout << std::endl;

    Adapter adapter(&adaptee);
    adapter.method();

    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1986636.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CHIESI凯西医药:外企入职测评综合能力及性格测试SHL题库测评真题解析

CHIESI凯西医药是一家意大利国际制药集团&#xff0c;以研发为核心&#xff0c;专注于呼吸道健康、罕见疾病和专科治疗的创新治疗方案。集团总部位于意大利帕尔马市&#xff0c;拥有超过85年的历史&#xff0c;业务遍及全球31个国家和地区&#xff0c;拥有7,000多名员工。2023年…

day22(mysql数据库主从搭建)

上午&#xff1a; 1、为mysql添加开机启动chkconfig 2、编辑配置文件my.cnf 3、修改环境变量 4、mysql角色授权 角色不生效 在配置文件中不添加activate_all_roles_on_loginon glibc安装&#xff0c;my.cnf在项目目录之下 rpm安装&#xff0c;my.cnf文件在/etc/my.cnf 5、自…

函数实例讲解(五)

文章目录 提取字符串必学的函数&#xff08;LEFT、MID、RIGHT、LEN、LENB&#xff09;1、LEFT2、RIGHT3、MID4、LEN5、LENB 提取实战套路知多少1、FIND2、ISNUMBER 利用随机函数来抽奖&#xff08;RAND、RANDBETWEEN&#xff09;1、RAND2、RANDBETWEEN 排名的几种套路&#xff…

解决nacos疯狂报错“user nacos not found”

nacos疯狂报错“user nacos not found” 参考博客&#xff1a;https://blog.csdn.net/cnskylee/article/details/137640113 背景&#xff1a;项目启动后一直刷“user nacos not found”报错信息&#xff0c;但是不影响接口调用 解决&#xff1a; 1、将nacos版本切换为2.2.2&am…

ET实现游戏中聊天系统逻辑思路(服务端)

目录 一、准备工作 1.1 前言 1.2 完善聊天服务器 1.3 自定义聊天服消息 二、玩家登录聊天服 2.1 Gate网关与聊天服通讯 2.2 保存玩家实体映射实例ID 三、处理聊天逻辑 3.1 发送聊天消息的定义 3.2 定义聊天记录组件 3.3 编写发送聊天消息处理类 ET是一个游戏框架&…

Linux--shell脚本语言—/—终章

一、shell函数 1、shell函数定义格式 参数说明&#xff1a; 1、可以带function fun() 定义&#xff0c;也可以直接fun() 定义,不带任何参数。 2、参数返回&#xff0c;可以显示加&#xff1a;return 返回&#xff0c;如果不加&#xff0c;将以最后一条命令运行结果&#xff…

(20)SSM-MyBatis关系映射

MyBatis关联映射 概述 在实际开发的工程中&#xff0c;经常对出现多表操作&#xff0c;如果常见的根据某条数据的ID去检索数据&#xff08;根据用户查询订单信息&#xff09;&#xff0c;这个时候我们数据库设计的时候就需要使用外键进行关联&#xff0c;那么mybatis在操作这…

推荐4款2024年热门的win10 录屏软件。

如果只是偶尔需要简单地录制一下电脑屏幕&#xff0c;一般大家都会选免费且操作简单的软件&#xff1b;但如果是专业的视频制作&#xff0c;就需要功能强大、支持后期编辑的软件。而下面的这4款软件却能满足以上两种需求&#xff0c;并且能够兼容的系统也很多。 1、福昕专业录屏…

如何提升你的广告创意?

当你有一个好的产品时&#xff0c;你一定会想到用广告投放来推广它。但简单的广告投放是不足以帮助你建立起品牌知名度的。要从众多产品中脱颖而出&#xff0c;还需要独特又有效的广告创意。以下是尤里改为你总结的提升广告创意的办法&#xff0c;电子商务品牌可以着重了解下~ …

没有软件测试经验的计算机毕业生如何准备面试测试工程师这一职位?

古语云&#xff1a;“知己知彼&#xff0c;百战不殆”。 想应聘测试工程师&#xff0c;首先要知道企业需要什么样的测试工程师&#xff0c;需要具备哪些技术。想知道这点并不难&#xff0c;并且有捷径可走&#xff0c;直接去招聘网站中找答案&#xff0c;看各公司的招聘简章即…

opencascade TopoDS、TopoDS_Vertex、TopoDS_Edge、TopoDS_Wire、源码学习

前言 opencascade TopoDS转TopoDS_Vertex opencascade TopoDS转TopoDS_Edge opencascade TopoDS转TopoDS_Wire opencascade TopoDS转TopoDS_Face opencascade TopoDS转TopoDS_Shell opencascade TopoDS转TopoDS_Solid opencascade TopoDS转TopoDS_Compound 提供方法将 TopoDS_…

Pytorch损失函数-torch.nn.NLLLoss()

一、简介 1.1 nn.CrossEntropyLoss 交叉熵损失函数的定义如下&#xff1a; 就是我们预测的概率的对数与标签的乘积&#xff0c;当qk->1的时候&#xff0c;它的损失接近零。 1.2 nn.NLLLoss 官方文档中介绍称&#xff1a; nn.NLLLoss输入是一个对数概率向量和一个目标标…

进阶学习------线程等待

什么是线程等待 线程等待是指在一个多线程程序中&#xff0c;一个线程在继续执行之前需要等待另一个线程完成特定任务或达到某个状态的行为。在编程中&#xff0c;线程等待是一种同步机制&#xff0c;用于协调不同线程之间的执行顺序&#xff0c;确保数据的一致性和避免竞态条…

鸿蒙AI功能开发【拍照识别文字】

拍照识别文字 介绍 本示例通过使用ohos.multimedia.camera (相机管理)和textRecognition&#xff08;文字识别&#xff09;接口来实现识别提取照片内文字的功能。 效果预览 使用说明 1.点击界面下方圆形文字识别图标&#xff0c;弹出文字识别结果信息界面&#xff0c;显示当…

学习大数据DAY32 HTML基础语法和Flask库的使用

目录 HTML 超文本标记语言 Hyper Text Markup Language 上机练习 9 Flask 显示层 UI 前后端结合动态加载列表数据 flask 在 html 中的语法 上机练习 10 HTML 超文本标记语言 Hyper Text Markup Language 1.<html></html>: 根标签 2.<head></head&…

贝塞尔曲线参数方程推导

1.贝塞尔曲线简介 1.1什么是贝塞尔曲线 贝塞尔曲线于 1962 年&#xff0c;由法国工程师皮埃尔贝济埃&#xff08;Pierre Bzier&#xff09;所广泛发表&#xff0c;他运用贝塞尔曲线来为汽车的主体进行设计。 贝塞尔曲线主要用于二维图形应用程序中的数学曲线&#xff0c;曲线…

opencascade TopoDS_Builder 源码学习

opencascade TopoDS_Builder 前言 构建器&#xff08;Builder&#xff09;用于创建拓扑数据结构。它是构建器类层次结构的根。 构建器中包含三组方法&#xff1a; Make 方法用于创建形状&#xff08;Shapes&#xff09;。Add 方法用于将一个形状包含到另一个形状中。Remove…

访问网站显示不安全怎么办?

访问网站时显示“不安全”&#xff0c;针对不同的原因有不同的解决方式&#xff0c;下面是常见的几种原因和对应的解决办法。 1.未启用HTTPS协议 如果网站仅使用HTTP协议&#xff0c;数据传输没加密&#xff0c;因此会被浏览器标记为“不安全”。解决办法是启用HTTPS协议,给…

可观察性与人工智能的结合:解锁数据收集、分析和预测的新领域

随着软件系统变得越来越复杂&#xff0c;可观察性&#xff08;根据系统外部输出了解系统内部状态的能力&#xff09;已成为开发人员和运营团队的一项关键实践。 传统的可观测性方法难以跟上现代应用的规模和复杂性。随着遥测数据量的增加&#xff0c;导航变得成本高昂且复杂。…

【计算机组成原理】各种周期与字长的概念辨析

前言 在计算机组成原理中&#xff0c;我们会在做题时遇到各种周期与字长的概念辨析题&#xff08;非常重要&#xff09;&#xff0c;因此我们再次统一做一个梳理&#xff0c;帮助大家在理解的基础上进行记忆&#xff0c;并附上几道好题辅助理解。 概念讲解 指令周期&#xff…