uml和模式应用考试(uml适用于各种软件开发方法)

适配器模式概述 适配器模式(AdapterPattern)定义:将一个类的接口转换成客户希望的另一个接口。适配器模式让那些不兼容的类可以一起工作。适配器模式是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,兼容多个独立接口的功能。在生活中用电电压是220V,但是电脑、手机、LED等设备不会使用高电压,因此都需要电源适配器将220V转换成对应的低电压。其中电源适配器就充当一个适配器…

适配器模式概述

适配器模式(Adapter Pattern)定义:将一个类的接口转换成客户希望的另一个接口。适配器模式让那些不兼容的类可以一起工作。适配器模式是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,兼容多个独立接口的功能。在生活中用电电压是220V,但是电脑、手机、LED等设备不会使用高电压,因此都需要电源适配器将220V转换成对应的低电压。其中电源适配器就充当一个适配器的角色。

适配器模式结构

适配器模式结构包含以下几个角色:

  • 适配器类(Adapter):适配器与适配者之间是继承或实现关系。
  • 适配者类(Adaptee):适配器与适配者之间是关联关系。
  • 目标抽象类(Target):定义客户所需要的接口。

适配器模式UML类图如下:

C++设计模式——适配器模式

模式的应用实例

用适配器模式(Adapter)模拟新能源汽车的发动机。能源汽车的发动机有电能发动机(Electric Motor)和光能发动机(Optical Motor)等,各种发动机的驱动方法不同,例如,电能发动机的驱动方法 ElectricDrive() 是用电能驱动,而光能发动机的驱动方法 OpticalDrive() 是用光能驱动,它们是适配器模式中被访问的适配者。

客户端希望用统一的发动机驱动方法 drive() 访问这两种发动机,所以必须定义一个统一的目标接口 Motor,然后再定义电能适配器(Electric Adapter)和光能适配器(Optical Adapter)去适配这两种发动机。

C++设计模式——适配器模式

代码:

// 适配器模式.cpp : 此文件包含 \"main\" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
using namespace std;
typedef enum
{
  ELECTRIC = 0,
  OPTICAL
}ADAPTER_TYPE;
//电机基类
class Adapter
{
public:
  Adapter() = default;
  virtual ~Adapter() = default;
  virtual void Driver() = 0;
};
//电能发动机
class ElectricMotor
{
public:
  ElectricMotor() = default;
  ~ElectricMotor() = default;
  void ElectricDrive() { cout << \"电能发动机驱动汽车\" << endl; }
};
//光能发动机
class OpticalMotor
{
public:
  OpticalMotor() = default;
  ~OpticalMotor() = default;
  void OpticalDriver() { cout << \"光能发动机驱动汽车\" << endl; }
};
class ElectricAdapter : public Adapter
{
public:
  ElectricAdapter()
  {
    pMotor = new ElectricMotor();
  }
  ~ElectricAdapter()
  {
    if (pMotor)
    {
      delete pMotor;
      pMotor = nullptr;
    }
  }
  void Driver()
  {
    pMotor->ElectricDrive();
  }
private:
  ElectricMotor* pMotor;
};
class OpticalAdapter : public Adapter
{
public:
  OpticalAdapter()
  {
    pMotor = new OpticalMotor();
  }
  ~OpticalAdapter()
  {
    if (pMotor)
    {
      delete pMotor;
      pMotor = nullptr;
    }
  }
  void Driver() 
  {
    pMotor->OpticalDriver();
  }
private:
  OpticalMotor* pMotor;
};
class AdapterFactory
{
public:
  static Adapter* CreateAdapter(ADAPTER_TYPE type)
  {
    switch (type)
    {
    case ADAPTER_TYPE::ELECTRIC:
      return new ElectricAdapter();
    case ADAPTER_TYPE::OPTICAL:
      return new OpticalAdapter();
    default:
      return nullptr;
    }
  }
};
int main()
{
  Adapter* pAdapter = nullptr;
  pAdapter = AdapterFactory::CreateAdapter(ELECTRIC);
  pAdapter->Driver();
  delete pAdapter;
  pAdapter = AdapterFactory::CreateAdapter(OPTICAL);
  pAdapter->Driver();
  delete pAdapter;
  return 0;
}

适配器模式优缺点

优点

  • 更好的复用性:系统需要使用现有的类,而此类的接口不符合系统的需要。那么通过适配器模式就可以让这些功能得到更好的复用。
  • 透明、简单:客户端可以调用同一接口,因而对客户端来说是透明的。这样做更简单 & 更直接
  • 更好的扩展性:在实现适配器功能的时候,可以调用自己开发的功能,从而自然地扩展系统的功能。
  • 解耦性:将目标类和适配者类解耦,通过引入一个适配器类重用现有的适配者类,而无需修改原有代码
  • 符合开放-关闭原则:同一个适配器可以把适配者类和它的子类都适配到目标接口;可以为不同的目标接口实现不同的适配器,而不需要修改待适配类

缺点

  • 过多地使用适配器,会让系统非常零乱,不易整体进行把握。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)
上一篇 2022年5月13日 下午3:28
下一篇 2022年5月13日 下午3:29

相关推荐

  • 腾讯视频播放器错误(年轻人喜欢的短视频app推荐)

    什么?不仅看书看短视频可以赚钱,现在连看连续剧也可以赚钱了而且还没有广告!这就是来自腾讯的、新鲜出炉的“片多多”App,一起来体验一下吧。 关注“趣玩APPS”公众号,发送“片多多”获取下载地址。 进入直接看片简单粗暴 “片多多”别看名字起的简单粗暴,其实它可是腾讯出品的,主要依靠“看剧赚钱”来吸引用户。 安装好片多多后运行,可以看到片多多主界面就是一个播放器,点开APP后这个播放器就直接就给你推…

    2022年5月12日
    920
  • 音乐类app有哪些,三大音乐软件app对比横评

    都说:“音乐是人类伟大的精神食粮”,为此,不少音乐发烧友使用专业播放器、设备以及高保真的无损音乐以获得更好的听音体验,但这东西有一定的门槛,讲究“专业性”,玩起来也相对麻烦。 对于大众消费者来说,想要获得更好的听音体验,直接在音乐APP上使用无损音质,最为简单直接,当然代价是:基本所有的音乐APP都需要开通会员才能享受无损音乐。 目前,市面上主流的音乐APP不多,主要就是那几款,那么到底哪一款更值…

    2022年8月25日
    1400
  • 干什么能赚快钱,分享几条挣快钱的路子

    赚钱也称吸金,能日进斗金是最好不过的了,很多人认为快速赚钱是不可能的,其实,想要快速赚钱也并不是一件完全不可能的事,那么,做什么赚钱最快呢? 1、做家教 做家教是一个赚钱轻松的好外快,尤其是一对一家教,按照小时或次数收费,一个月也能赚不少money。 2、做暑假工 学生可以在寒暑假期间,做做小时工,一般工资是周结的,既能积累社会阅历,也能赚一些生活费。 3、做百度经验 百度经验是一个非常优秀的平台…

    2022年8月26日
    460
  • 增值税票是什么,一分钟让你了解增值税票

    解决发票实务中的许多问题,都需要对发票的基础知识有所了解。《国家税务总局货物和劳务税司关于做好增值税发票使用宣传辅导有关工作的通知》(税总货便函〔2017〕127)的附件《增值税发票开具指南》基于当时的政策,对通过增值税发票管理新系统开具的发票的相关政策进行了梳理。当时通过增值税发票管理新系统开具的发票种类包括增值税专用发票、增值税普通发票、增值税电子普通发票和机动车销售统一发票。本文在此基础上,…

    2022年9月18日
    350
  • 如何优化好一个网站,网站优化的四大技巧

    一个真正的好网站,不仅仅在搭建的时候要做好,在后期的维护优化方面也要认真做好,这样的网站才是真正的优秀的网站,也只有这样的网站才能做到排名靠前,有更多的客户源源不断的咨询,网站优化的作用,不容小觑。   那么到底怎样才能得到一个优秀的网站呢,下面东东网的小编就说说网站优化的几点要求:   1、确定网站正常运作与访问一个网站最基本的就是访问是否正常,正常打开网页,网站运行正常流畅是最基础的一点,也是…

    2022年5月21日
    590
  • 真正的千兆路由器排名(这两款路由器堪称性价比之王)

    WIFI是这个世界上不可或缺的东西,夸张点说,你可以没有钱,但决不能没有WIFI。当然了,我们看到了WIFI的无限风光,但其背后的付出者却无人提及,没错,它就是路由器。这次我们就来聊聊路由器吧! 路由器是网络信号传输的一个主要媒介,它的配置与性能直接影响着WIFI的使用体验,特别是现在百兆、千兆网络走向大众家庭,如果你还在用以前那种只支持百兆的路由器,是时候要换一款千兆路由器了,否则你的网速会受限…

    2022年9月21日
    2350
  • 国家数字货币什么时候发行,盘点中国数字货币的发展情况

    喊了那么久的国家法定数字货币终于真的!立刻!马上!就要!来了! 近日,多国央行高层齐聚纽约康奈尔大学科技园,参加联合国国际电信联盟(ITU)召开的法定数字货币焦点组第二次会议。众所周知,目前有不少国家正在研究中央银行数字货币(CBDC),希望为数字经济提供合法的主权数字货币。 中国人民银行数字货币研究所所长姚前在会上分享了中国央行关于法定数字货币的两层结构模型设计及详细功能。 姚前考虑在商业银行传…

    2022年5月26日
    860
  • 菜市场20个生意,菜市场卖什么最吸引人

    ​ “上了一天班,已经没力气再去菜市场砍价了,要是能有外卖小哥把新鲜的蔬菜送上门,该有多好啊……” 相信很多人都曾萌生过类似的想法。 如今,梦想已成真——菜市场这个最接地气的地方,正在成为电商一较高下的新战场。 今年年初,“美团买菜”APP上线,随后两个月就将便民服务站开入了上海、北京两个城市;3月下旬,阿里系的首家盒马菜市于上海五月花广场开业,饿了么雄心勃勃地要把买菜业务从100城拓展到500城…

    2022年5月23日
    1070
  • 2020年创业项目排行榜,适合年轻人的3个致富项目

    如今的生活中相信有很多人很多人都在对自己的未来做着规划,选择创业的年轻人也越来越多,对于年轻人来说,创业经验不足,资金准备也不是很足,那么,适合年轻人创业项目有哪些?下面一起来了解下! 适合年轻人创业项目 1、家电维修店 首先要讲的是当然就是电脑维修了,因为这可以说是大学生的常用手段,因为随着电脑时代的发展,对电脑工作者要求越来越高,所以一些熟悉简单的操作可以说是已经远远不能满足现状维修电脑的要求…

    2022年6月29日
    660
  • 小蚁智能行车记录仪(小米行车记录仪全方位解析评测)

    现在市面上的行车记录仪市场又鱼龙混杂,质量良莠不齐,有的清晰度差,有的变形严重,有的毫无夜视能力,前不久小米生态链企业小蚁,在众望所归下终于推出了行车记录仪产品,楼主也有幸第一时间参加众筹拿到了产品,接下来就和大家简单介绍一下。 小蚁行车记录仪的快递箱上标有“做极致产品,让用户尖叫”的标语,这也是小米做产品的态度,扫描旁边的二维码可以直达小蚁的天猫旗舰店。 在包装箱中,行车记录仪包装盒被泡沫完美的…

    2022年10月18日
    520

发表回复

登录后才能评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信