16.适配器模式

本文涉及的产品
函数计算FC,每月15万CU 3个月
简介:  1适配器模式的核心内容是: A:两种或多种不同类型的类。 B:通过适配器(Translator)让另外一种(ForeignCenter)协同另外一者工作。达到类似player的功能 2适配器模式的作用:让不是一种类型的类也同样执行类似相同类的动作。 3桥接模式具体描述 适配器(变压器)模式:把一个类的接口变换成客户端所期待的另一种接口 从而使


1适配器模式的核心内容是:

A:两种或多种不同类型的类。

B:通过适配器(Translator)让另外一种(ForeignCenter)协同另外一者工作。达到类似player的功能

2适配器模式的作用:让不是一种类型的类也同样执行类似相同类的动作。

3桥接模式具体描述

适配器(变压器)模式:把一个类的接口变换成客户端所期待的另一种接口

从而使原本因接口原因不匹配而无法一起工作的两个类能够一起工作。

适配类可以根据参数返还一个合适的实例给客户端。

 

在朋友聚会上碰到了一个美女Sarah,从香港来的,

可我不会说粤语,她不会说普通话,只好求助于我的朋友kent了,

他作为我和Sarah之间的Adapter,让我和Sarah可以相互交谈了

(也不知道他会不会耍我)

4适配器模式类图

5.代码:

#include <iostream>

#include <string>

using namespace std;

//适配器(变压器)模式:把一个类的接口变换成客户端所期待的另一种接口

//,从而使原本因接口原因不匹配而无法一起工作的两个类能够一起工作。

//适配类可以根据参数返还一个合适的实例给客户端。

//

//在朋友聚会上碰到了一个美女Sarah,从香港来的,

//可我不会说粤语,她不会说普通话,只好求助于我的朋友kent了,

//他作为我和Sarah之间的Adapter,让我和Sarah可以相互交谈了

//(也不知道他会不会耍我)

 

class Player

{

public:

    string name;

    Player(string name)

    {

        this->name = name;

    }

    virtual void attack() = 0;

    virtual void defence() = 0;

};

 

//前锋,是Player类型的

class Forwards :public Player

{

public:

    Forwards(string name) :Player(name){}

    void attack()

    {

        cout << name << " 前锋进攻" << endl;

    }

    void defence()

    {

        cout << name << " 前锋防守" << endl;

    }

};

 

//中锋,同样是Player类型

class Center :public Player

{

public:

    Center(string name) :Player(name){}

    void attack()

    {

        cout << name << " 中锋进攻" << endl;

    }

    void defence()

    {

        cout << name << " 中锋防守" << endl;

    }

};

 

//后卫,同样是Player

class Backwards :public Player

{

public:

    Backwards(string name) :Player(name){}

    void attack()

    {

        cout << name << " 后卫进攻" << endl;

    }

    void defence()

    {

        cout << name << " 后卫防守" << endl;

    }

};

 

/*************************************************

这里的ForeignCenter本来和Player并非同种类型的,本来不可以直接操作

但是它和Player有相同的特征

**************************************************/

class ForeignCenter

{

public:

    string name;

    ForeignCenter(string name)

    {

        this->name = name;

    }

    void myAttack()

    {

        cout << name << " 外籍中锋进攻" << endl;

    }

    void myDefence()

    {

        cout << name << " 外籍后卫防守" << endl;

    }

};

 

/***************************************************

下面的相当于适配器,将不同类型的类也同样能够互相工作

****************************************************/

class Translator :public Player

{

private:

    ForeignCenter *fc;

public:

    Translator(string name) :Player(name)

    {

        fc = new ForeignCenter(name);

    }

    void attack()

    {

        fc->myAttack();

    }

    void defence()

    {

        fc->myDefence();

    }

};

 

int main()

{

    //创建一个中锋

    Player *p1 = new Center("李俊宏");

    p1->attack();

    p1->defence();

 

    Translator *tl = new Translator("姚明");

    tl->attack();

    tl->defence();

    cin.get();

    return 0;

}

运行结果如下:

相关实践学习
【AI破次元壁合照】少年白马醉春风,函数计算一键部署AI绘画平台
本次实验基于阿里云函数计算产品能力开发AI绘画平台,可让您实现“破次元壁”与角色合照,为角色换背景效果,用AI绘图技术绘出属于自己的少年江湖。
从 0 入门函数计算
在函数计算的架构中,开发者只需要编写业务代码,并监控业务运行情况就可以了。这将开发者从繁重的运维工作中解放出来,将精力投入到更有意义的开发任务上。
目录
相关文章
|
存储 人工智能 安全
操作系统的心脏——内核深度解析
【10月更文挑战第29天】 本文深入探讨了操作系统的核心组件——内核,包括其定义、功能、架构以及在现代计算中的重要性。通过对比不同操作系统内核的设计哲学和技术实现,揭示了内核如何影响系统性能、稳定性和安全性。此外,文章还讨论了未来内核技术的潜在发展方向,为读者提供了一个全面了解内核工作原理的平台。
|
机器学习/深度学习 人工智能 自然语言处理
人工智能的发展现状如何?
【10月更文挑战第16天】人工智能的发展现状如何?
|
机器学习/深度学习 自然语言处理 算法
自然语言处理中的情感分析技术
自然语言处理中的情感分析技术
|
供应链 安全 API
常见的京东商品接口类型
京东商品接口是京东开放平台提供的一系列API,支持商品详情查询、商品搜索、评价查询、库存管理和订单处理等功能。开发者需注册获取API密钥,并按文档要求构造请求。这些接口助力开发者构建丰富的电商应用,提升用户体验。使用时需遵守平台规定,确保数据安全。
|
运维 Oracle 前端开发
Oracle 11g RAC集群日常运维命令总结
Oracle 11g RAC集群日常运维命令总结
515 2
|
存储 对象存储 数据安全/隐私保护
百度搜索:蓝易云【minio通过docker方式部署教程】
这样,你就成功地通过Docker方式部署了Minio对象存储服务。你可以通过浏览器或其他Minio客户端工具来使用和管理Minio。希望以上教程对你有所帮助!如果你有其他问题,请随时继续提问。
527 0
|
API 数据安全/隐私保护 Android开发
What Fuck Android.fbe is?
What Fuck Android.fbe is?
245 0
|
移动开发 JavaScript Java
软件测试用例经典方法 | 单元测试法案例
单元测试又称模块测试,是对软件设计的最小单元的功能、性能、接口和设计约束等的正确性进行检验,检查程序在语法、格式和逻辑上的错误,并验证程序是否符合规范,以发现单元内部可能存在的各种缺陷。
662 0
软件测试用例经典方法 | 单元测试法案例
|
Web App开发 JavaScript 前端开发
Python Selenium 执行 JavaScript
Python Selenium 执行 JavaScript
|
JSON 监控 API
监控记录局域网网速并自动用用Python上传结果
抛砖引玉,给出一个Python实现的监控记录局域网网速并自动上传结果的简单示例
748 0