`
王杲杲
  • 浏览: 44378 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

“学习OO好榜样”之Adapter模式

 
阅读更多
我对Adapter模式的理解是:
某处有一些需求,可体现为Target接口(不妨假定Target有两个方法,m1、m2)。
我们在满足该需求的时候,即构造类来实现Target接口的时候,很容易想到的是看看是否存在已有资源可被利用(重用)。
比方说,此时我们发现Adaptee类实现了方法m1,如何重用?

两种重用方式分别对应于Adapter模式的两种形态:
1 继承的方式——类的Adapter模式
Adapter类从Adaptee类继承,于是自然拥有了方法m1。再自行实现方法m2,便完成了对Target接口的实现。
2 合成/聚合的方式——对象的Adapter模式
Adapter拥有一个Adaptee类型的属性,方法m1的实现委托给该属性实例的方法m1来做。再自行实现方法m2,也完成了对Target接口的实现。

哪种方式好呢?我强烈认为后者好些。满足合成/聚合复用原则。
事实上,后者确实更加灵活,比如Adaptee所拥有的方法m1名字叫做m3,但其实现的功能与Target要求的方法m1完全一样,或者只需稍微转换一下输出结果的格式。那么类的Adapter模式就不适用了,而对象的Adapter模式依然可以面带微笑。

总之,我认为Adapter模式是基于重用考虑的一种模式。
你要什么(接口),我就给你什么(实现类),我从哪里攒叨出来的方法实现,你就不用关心了(封装实现逻辑、实现方式)。你只需知道我是你所需接口的实现类。
分享到:
评论

相关推荐

    学习oo好榜样(设计良品)

    【学习oo好榜样(设计良品)】 设计良好的软件代码是每个程序员追求的目标,而避免“Bad Smells”(不良代码气味)并进行重构是实现这一目标的重要手段。本篇文章将探讨两个重要的代码质量指标——重复的代码...

    OO中对于23种设计模式的整理

    6. 适配器模式(Adapter Pattern) 适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口原因不匹配而无法一起工作的两个类能够一起工作。适配类可以根据参数返还一个合适的实例给客户端。 ...

    23种设计模式,OO思想

    标题和描述中提到的“23种设计模式,OO思想”,是软件工程领域的一个核心概念,尤其是对于面向对象编程(Object-Oriented Programming,简称OO)的深入理解和实践至关重要。设计模式是由Erich Gamma、Richard Helm、...

    ABAP OOALV学习文档

    ### ABAP OOALV 学习文档详析 #### 一、ABAP OOALV 概述 **ABAP OOALV**(Object-Oriented Application List Viewer)是一种用于SAP系统的高级列表显示技术,主要用于生成复杂的报表和列表视图。自R/3 4.6C版本起...

    二维码OO电子商务商业模式案例分析.pptx

    【二维码OO电子商务商业模式】是一种将线上与线下商业活动深度融合的新型模式,旨在通过移动互联网技术,尤其是二维码的应用,实现消费者的在线购买与线下的消费体验。随着全球手机用户的急剧增长,尤其是中国市场的...

    基于信息化教学时代背景下高职院校OO混合式教学模式设计研究.docx

    【基于信息化教学时代背景下高职院校OO混合式教学模式设计研究】 在信息化教学时代,高职院校的教学方式正在经历深刻的变革。O2O(Online to Offline)混合式教学模式,结合线上和线下教学,成为提升教学质量的有效...

    23个设计模式标准OO结构

    1. 适配器模式(Adapter):将一个类的接口转换成客户希望的另一个接口。 2. 桥接模式(Bridge):将抽象部分与实现部分分离,使它们可以独立变化。 3. 组合模式(Composite):允许你将对象组合成树形结构来表示...

    OO与设计模式

    软件工程软考认证,Java与设计模式,下午必考题,24种设计模式

    5-互评-OO之接口-DAO模式代码阅读及应用

    总结来说,"5-互评-OO之接口-DAO模式代码阅读及应用"这个主题涵盖了Java开发中的关键知识点,包括接口的概念及其在实现模块间契约中的作用,以及DAO模式在数据访问层的设计和实现。理解并熟练应用这些知识对于提升...

    SAP ABAP开发学习——第10课:OOALV(视频教程)

    在本课程中,我们将深入探讨SAP ABAP的面向对象技术在ALV(ABAP List Viewer)中的应用,这是SAP ABAP开发学习的第10课,专注于OOALV。这个主题对于任何想要在SAP系统中进行高效数据展现和处理的开发者来说都是至关...

    java设计模式之面向对象的思想(think in OO(Object Oriented))

    5. 适配器模式(Adapter Pattern):适配器模式将一个类的接口转换成客户希望的另一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以协同工作。 6. 观察者模式(Observer Pattern):观察者模式定义了...

    实战OO的pdf自留备份

    最后的"开启征程结尾篇"可能是一个结语或者后记,鼓励读者将所学应用到实际项目中,开始他们的OO编程实践之旅。 在标签中提到的"类图"是UML(统一建模语言)的一种图表,用于表示类的结构和关系,包括类的属性、...

    设计模式——可复用的OO软件

    设计模式——可复用的OO软件

    head first 设计模式

    第12章介绍如何将两个以上的设计模式结合起来成为新的设计模式(例如著名的MVC模式),作者称其为复合设计模式(这是作者自创的名称,并非四人组的标准名词),第13章介绍如何进一步学习设计模式,如何发觉新的设计模式...

    移动互联网思维改造传统商业模式及OO实战.ppt

    移动互联网思维改造传统商业模式及OO实战 移动互联网思维改造传统商业模式及OO实战是指通过互联网思维来改造传统的商业模式,使其适应移动互联网时代的发展趋势。这个概念的提出是为了帮助传统企业适应移动互联网...

    OOALV常用功能完整简例

    例如,“g_alv_grid”是一个OOALV对象的引用类型,而“g_it_show”是一个与之关联的内表。代码片段中展示了如何通过SQL查询读取数据,并通过ALV展示。 “PERFORM frm_set_alv_toolbar”这一行代码表明系统中存在一...

    Head First 设计模式(中文完整版+附书源码)part1

    第12章介绍如何将两个以上的设计模式结合起来成为新的设计模式(例如著名的MVC模式),作者称其为复合设计模式(这是作者自创的名称,并非四人组的标准名词),第13章介绍如何进一步学习设计模式,如何发觉新的设计...

    OO设计和伪状态模式实现的控制台五子棋游戏

    在本项目中,"OO设计和伪状态模式实现的控制台五子棋游戏"是一个用C#编程语言实现的控制台应用程序,旨在教授面向对象编程(Object-Oriented Programming, OOP)和设计模式,特别是状态模式的应用。下面将详细阐述...

    《Head First Java》是本完整的面向对象(object-oriented,OO)程序设计和Java的学习指导

    第一册:《Head First Java》是本完整的面向对象(object-oriented,OO)程序设计和Java的学习指导。 第二册:《HeadFirst设计模式》(中文版)共有14章,每章都介绍了几个设计模式,完整地涵盖了四人组版本全部23个设计...

    浅谈CSS编程的OOCSS和SMACSS设计模式

    在CSS编程中,OOCSS(Object-Oriented CSS)和SMACSS(Scalable and Modular Architecture for CSS)是两种重要的设计模式,它们旨在提高CSS代码的可维护性和可扩展性。这两种模式都是为了优化CSS编写方式,降低对...

Global site tag (gtag.js) - Google Analytics