适配器模式(C++)

来源:互联网 发布:dnf优化后盒子无法换装 编辑:程序博客网 时间:2024/05/18 03:06

简述

适配器模式可以将一个类的接口转化为客户希望的接口,使原本不兼容不能一起工作的类可以一起工作它可以分为类适配器模式和对象适配器模式。想使用一个已经存在的类,但如果它的接口实现的功能正是我们想要的但是调用方式不同,也就是使用它的方法和你的要求不相同时,就应该考虑用适配器模式,在适配器内部进行处理。

场景说明

出国旅游时,国外的景点简介都是英文的,如果不会英文就看不懂,这时候就需要一个翻译,通常是导游将英文翻译成中文解释给我们听,我们才能使用这个信息。

UML类图

类适配器


对象适配器


对象职责

tourist:游客,也就是目标接口类,需要使用ScenicSpot类的接口获取信息
ScenicSpot:景点信息,需要适配的类,
Translate:翻译者也是适配器类,负责把ScenicSpot类经过处理后,供tourist调用


代码实现

//目标class tourist{public:std::string KnowScenicSpotChain(){}std::string mDataChain;};//适配class ScenicSpot{public:std::string KnowScenicSpotEnglish(){std::string dataEnglish("this is Eiffel Tower");return dataEnglish;}};//类适配器class Translate : public tourist, public ScenicSpot{public:std::string KnowScenicSpotChain(){std::string dataEnglish = KnowScenicSpotEnglish();//把英文翻译成中文std::string dataChain("这是埃菲尔铁塔");mDataChain = dataChain;}};//对象适配器class Translate : public tourist{public:std::string KnowScenicSpotChain(){std::string dataEnglish = mScenicSpot->KnowScenicSpotEnglish();//把英文翻译成中文std::string dataChain("这是埃菲尔铁塔");mDataChain = dataChain;}public: ScenicSpot* mScenicSpot;};


原创粉丝点击