4、适配器模式总结

在对象适配器模式中。适配器与适配者之间是关联关系;在类适配器模式中。适配器与适配者之间是继承关系。不论是对象适配器还是类适配器。适配器模式都将现有接口转化为客户类所期望的接口。实现了对现有类的复用。为了避免两个或者多个事物之间直接耦合。应该怎样分配职责?

大多数情况都能够通过添加一层间接性来解决。将职责分配给中介对象。使其作为其它构件或服务之间的媒介,以避免他们之间的直接耦合。在适配器模式中,为了避免客户类和与适配者类直接耦合,也就是客户类直接訪问适配者类。能够添加一个适配器类,减少客户类与适配者类的耦合性。当客户类调用适配器的方法时,在适配器类的内部将调用适配者类的方法。而这个过程对客户类是透明的,客户类并不直接訪问适配者类。

它是一种使用频率很高的设计模式,在软件开发中得以广泛应用。

1.主要长处

不管是对象适配器模式还是类适配器模式都具有例如以下长处:

(1) 将目标类和适配者类解耦。通过引入一个适配器类来重用现有的适配者类,无须改动原有结构。

(2) 添加了类的透明性和复用性,将详细的业务实现过程封装在适配者类中。对于client类而言是透明的。并且提高了适配者的复用性,同一个适配者类能够在多个不同的系统中复用。

(3) 灵活性和扩展性都非常好。通过使用配置文件,能够非常方便地更换适配器,也能够在不改动原有代码的基础上添加新的适配器类,全然符合“开闭原则”。

详细来说,类适配器模式还有例如以下长处:

因为适配器类是适配者类的子类,因此能够在适配器类中置换一些适配者的方法,使得适配器的灵活性更强。

对象适配器模式还有例如以下长处:

(1) 一个对象适配器能够把多个不同的适配者适配到同一个目标。

(2) 能够适配一个适配者的子类。因为适配器和适配者之间是关联关系,依据“里氏代换原则”。适配者的子类也可通过该适配器进行适配。

2.主要缺点

类适配器模式的缺点例如以下:

(1) 对于Java、C#等不支持多重类继承的语言。一次最多仅仅能适配一个适配者类。不能同一时候适配多个适配者;

对象适配器模式的缺点例如以下:

与类适配器模式相比,要在适配器中置换适配者类的某些方法比較麻烦。假设一定要置换掉适配者类的一个或多个方法,能够先做一个适配者类的子类。将适配者类的方法置换掉。然后再把适配者类的子类当做真正的适配者进行适配,实现过程较为复杂。

3.适配器模式详细应用

(1)复用已经写好的功能模块,比如:已经写好了一个员工信息模块。要又一次开发一个新的企业管理系统。能够复用员工信息模块。

(2)程序执行时的日志信息,能够记录到数据库,也能够记录到Txt文件里。

如今变更需求。使日志信息能够同一时候记录到数据库和Txt文件里。

能够加入一个适配器类,适配数据库操作和文件操作。

(3)在软件开发过程中。我们会开发出一些功能性模块。如排序算法模块、查找模块、或者封装链表、队列、树等操作。

在须要复用这些功能的时候,直接使用。无需又一次开发这些功能模块。

(4)网上银行加密模块开发: 已经开发好了一套网银加密模块。如今须要又一次开发一个类似的软件,能够直接复用已经开发好的加密模块。

(5)某公司已经开发了一套火车票识别软件。包括二值化、去噪、版面分析、栏目提取等模块。如今要开发银行卡识别项目。则能够直接复用火车票识别中的功能模块。

(6)某公司想要开发一套输入法软件,能够购买搜狗输入法的搜索模块,直接加以复用,无需自己重头开发。

(7)生活中的适配器: 电源适配器。USB转串口线,水管专修工人使用各种接口连接本来没法进行相连的管道。

C++设计模式之适配器模式(三)的更多相关文章

  1. C#设计模式(7)——适配器模式(Adapter Pattern)

    一.引言 在实际的开发过程中,由于应用环境的变化(例如使用语言的变化),我们需要的实现在新的环境中没有现存对象可以满足,但是其他环境却存在这样现存的对象.那么如果将“将现存的对象”在新的环境中进行调用 ...

  2. C#设计模式之七适配器模式(Adapter)【结构型】

    一.引言   从今天开始我们开始讲[结构型]设计模式,[结构型]设计模式有如下几种:适配器模式.桥接模式.装饰模式.组合模式.外观模式.享元模式.代理模式.[创建型]的设计模式解决的是对象创建的问题, ...

  3. 8.3 GOF设计模式二: 适配器模式 Adapter

    GOF设计模式二: 适配器模式 Adapter  为中国市场生产的电器,到了美国,需要有一个转接器才能使用墙上的插座,这个转接 器的功能.原理?复习单实例模式  SingleTon的三个关键点  ...

  4. C#设计模式之六适配器模式(Adapter Pattern)【结构型】

    一.引言 从今天开始我们开始讲[结构型]设计模式,[结构型]设计模式有如下几种:适配器模式.桥接模式.装饰模式.组合模式.外观模式.享元模式.代理模式.[创建型]的设计模式解决的是对象创建的问题,那[ ...

  5. C#设计模式(7)——适配器模式(Adapter Pattern)(转)

    一.引言 在实际的开发过程中,由于应用环境的变化(例如使用语言的变化),我们需要的实现在新的环境中没有现存对象可以满足,但是其他环境却存在这样现存的对象.那么如果将“将现存的对象”在新的环境中进行调用 ...

  6. 怎样让孩子爱上设计模式 —— 7.适配器模式(Adapter Pattern)

    怎样让孩子爱上设计模式 -- 7.适配器模式(Adapter Pattern) 标签: 设计模式初涉 概念相关 定义: 适配器模式把一个类的接口变换成client所期待的还有一种接口,从而 使原本因接 ...

  7. JAVA学习笔记--策略设计模式与适配器模式

    一.策略设计模式 创建一个能够根据所传递对象的不同而具有不同行为的方法被称为策略设计模式:这类方法包含所要执行的算法中固定不变的部分,而“策略”包含变化的部分.策略就是传递进去的参数对象,它包含要执行 ...

  8. C#设计模式(7)——适配器模式

    一.概述 将一个类的接口转换成客户希望的另外一个接口.Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作. 二.模型 三.代码实现 using System; /// 这里以 ...

  9. 大型Java进阶专题(八)设计模式之适配器模式、装饰者模式和观察者模式

    前言 ​ 今天开始我们专题的第八课了.本章节将介绍:三个设计模式,适配器模式.装饰者模式和观察者模式.通过学习适配器模式,可以优雅的解决代码功能的兼容问题.另外有重构需求的人群一定需要掌握装饰者模式. ...

随机推荐

  1. SSL 认证之后,request.getScheme()获取不到https的问题记录

    通过浏览器输入https://www.xxx.com,request.getScheme()获取到的确实http而不是https通过request.getRequestURL()拿到的也是http:/ ...

  2. 如何通俗理解——>集群、负载均衡、分布式

    转自:周洲 (Julie) 在“高并发,海量数据,分布式,NoSql,云计算......”概念满天飞的年代,相信不少朋友都听说过甚至常与人提起“集群,负载均衡”等,但不是所有人都有机会真正接触到这些技 ...

  3. JS的scrollIntoView学习

    scrollIntoView(alignWithTop)  滚动浏览器窗口或容器元素,以便在当前视窗的可见范围看见当前元素.如果alignWithTop为true,或者省略它,窗口会尽可能滚动到自身顶 ...

  4. countdownlatch用法

    public void await() throws InterruptedException { };   //调用await()方法的线程会被挂起,它会等待直到count值为0才继续执行 publ ...

  5. CMakeFile命令之file

    file:文件操作命令. file(WRITE filename "message towrite"... ) WRITE 将一则信息写入文件’filename’中,如果该文件存在 ...

  6. 初入android驱动开发之字符设备(一)

    大学毕业,初入公司,招进去的是android驱动开发工程师的岗位,那时候刚进去,首先学到的就是如何搭建kernel.android的编译环境,然后就是了解如何刷设备以及一些最基本的工具.如adb.fa ...

  7. linux中断流程详解

    异常体系比较复杂,但是linux已经准备了很多的函数和框架,但是因为中断是和具体的开发板相关,所以中断需要我们自己来处理一些方面,但是这也是很少的一部分,很多公用的处理函数内核已经实现,linux内核 ...

  8. 详解java中的数据结构

    线性表,链表,哈希表是常用的数据结构,在进行Java开发时,JDK已经为我们提供了一系列相应的类来实现基本的数据结构.这些类均在java.util包中.本文试图通过简单的描述,向读者阐述各个类的作用以 ...

  9. IP地址转换、主机大小端、htonl、ntohl实现

    copy   #include <IOSTREAM> //#include <WINSOCK.H> using std; typedef  uint16; unsigned   ...

  10. Java自定义注解Annotation详解

    注解相当于一种标记,在程序中加了注解就等于为程序打上了某种标记,没加,则等于没有某种标记,以后,javac编译器,开发工具和其他程序可以用反射来了解你的类及各种元素上有无何种标记,看你有什么标记,就去 ...