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. Maven打war包时,添加本地jar包

    1.在项目根目录中新建lib文件夹,添加jar包 2.在pom.xml文件中添加dependency <dependency> <groupId>com.oracle</ ...

  2. 21点游戏java实现

    21点的基本知识 21点是世界上比较流行的扑克游戏项目 除掉大小王的一副扑克牌,共计52张牌 21点不区分花色,其中A----10均代表扑克牌本身的点数J Q K代表10点 区分庄家和闲家,其中闲家可 ...

  3. 浅谈js对象及对象属性

    对象: ECMA-262把对象定义为 :无序属性的集合,其属性可以包含基本值,对象或者函数. 严格来讲,这就相当于说对象是一组没有特定顺序的值.对象的每一个属性或方法都有一个名字,而每个名字都映射到一 ...

  4. HDU 4417 Super Mario(划分树)

    Super Mario Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  5. Inno Setup入门(二十五)——Inno Setup类参考(11)

    http://379910987.blog.163.com/blog/static/3352379720126693742406/ 今天说说TNewCheckListBox类.该类和ListBox差不 ...

  6. Android客户端面试题集锦

    声明:本文问题来自但不限于Xoper.ducky大牛的面试总结,网址:http://www.nowcoder.com/discuss/3043,欢迎各位进行补充 JAVA SE 1. 九种基本数据类型 ...

  7. iOS中TextView显示HTML文本

    在界面布局中,我们会用到各种控件来显示我们想要的数据来进行展示:之前遇到过这样一个问题,我从后台的数据传过来是json,解析过后直接放入一个TextView来进行显示,但是没注意到这个数据里面是HTM ...

  8. C语言大总结

    C语言大总结 一. C语言基本常识 1.语言由函数组成 2.main是程序入口 3.C语言中不能出现中文或中文字符 (凝视和字符串除外) keyword : C语言提供表示特殊含义的单词 特点 : 1 ...

  9. request.startAsync()不支持异步操作

    Servlet3.0使用异步处理时,后台报错: java.lang.IllegalStateException: A filter or servlet of the current chain do ...

  10. Log文件太大,手机ROM空间被占满

    客户要装车,进行项目验收了. 今天拿着几台手机去客户处,其中有一台手机从昨天晚上开始就一直开着我们的APP,今天早晨打开手机发现APP没有反应了. 在程序列表中将其杀掉,然后再启动程序,发现程序不能启 ...