鬼故事会 - 图形适配器有几种(设计模式适配器)

2023-06-13 09:01:16 阅读 :
设计模式|适配器意图

适配器模式的设计意图是将一个类的接口转换成希望的另外一个接口。适配器模式使得原本接口不兼容的类可以在一起工作。

适配器模式分成,对象适配器和类适配器两种模式。对象适配器中, 适配器与适配者之间是关联关系,在类适配器模式中,适配器与适配者之间是继承关系

类适配器通过继承来完成适配,对象适配器则是通过关联来完成 。

图形适配器有几种(设计模式适配器)(1)

适配器

适配器设计模式包含哪些角色
  • Target (目标抽象类)

目标抽象类定义客户端所需接口,可以是一个抽象类或者接口,也可以具体类。

  • Adapter(适配器类)

适配器可以调用另外一个接口,作为转换器,对Adaptee 和 Target 进行适配,适配器类是适配器模式的核心,子啊对象适配器中,可以通过 Target 并关联一个 Adaptee 对象。

  • Adaptee(适配者类)

适配者即被适配的角色,定义一个已经存在的接口。这个接口需要适配,适配者一般是一个具体类,包含客户端希望使用的业务方法。

类图

这个类图用一句话描述就是 Adaptee 实现 Target 关联 adapter

类适配器

图形适配器有几种(设计模式适配器)(2)

对象适配器

图形适配器有几种(设计模式适配器)(3)

代码实现

Head First 经典的例子,火鸡冒充鸭子:对象适配器 鸭子(Duck)和火鸡(Turkey)拥有不同的叫声,Duck 的叫声调用 quack() 方法,而 Turkey 调用 gobble() 方法。 要求将 Turkey 的 gobble() 方法适配成 Duck 的 quack() 方法,从而让火鸡冒充鸭子!

这里的鸭子就是 目标对象(Target) 火鸡就是适配者(Adaptee)

鸭子接口:Target

public interface Duck { void quack(); }

火鸡接口:

public interface Turkey { void gobble(); }

火鸡具体实现类 Adaptee 被适配的角色

public class WildTurkey implements Turkey { @Override public void gobble() { System.out.println("gobble!"); } }

火鸡适配器

public class TurkeyAdapter implements Duck { Turkey turkey; public TurkeyAdapter(Turkey turkey) { this.turkey = turkey; } @Override public void quack() { turkey.gobble(); } }

客户端 使用 target(Duck)

public class Client { public static void main(String[] args) { Turkey turkey = new WildTurkey(); Duck duck = new TurkeyAdapter(turkey); duck.quack(); } }

看个具体场景:

我们国家的民用电都是 220V,日本是 110V,而我们的手机充电一般需要 5V,这时候要充电,就需要一个电压适配器,将 220V 或者 100V 的输入电压变为 5V 输出。

Adaptee 适配者

public interface AC { int outputAC(); }

Adaptee 适配者具类

public class JapanAC implements AC{ private final int output = 110; public int outputAC() { return output; } }

目标类

public interface Target { boolean support(AC ac); int outputDC5V(AC ac); }

适配器

public class JapanAdapter extends JapanAC implements Target { public boolean support(AC ac) { return ac.outputAC() == super.outputAC(); } public int outputDC5V(AC ac) { int inputAC = ac.outputAC(); int outputAC = inputAC/22; System.out.println("Japan 适配器输入电压:" inputAC " 输出电压:" outputAC); return outputAC; } }

客户端使用

public class Main { public static void main(String[]args){ Target japanAdapter = new JapanAdapter(); AC ac = new JapanAC(); if(japanAdapter.support(ac)){ japanAdapter.outputDC5V(ac); } } }

Java 中哪些使用了适配器
  • java.util.Arrays#asList()
  • java.util.Collections#list()
  • java.util.Collections#enumeration()
  • javax.xml.bind.annotation.adapters.XMLAdapter
参考资料

Adapter 设计模式

适配器模式

欢迎关注公众号:程序员开发者社区,
本文标题:图形适配器有几种(设计模式适配器) - 故事会
本文地址:http://www.chinaggs.net/gushihui/43713.html

相关文章

  • 印度神话-导言

    【印度神话-导言】简介:印度是世界上文明起源最早的国家之一,大约公元前 2500 年左右,印度 河流域就已经出现了城市化文明,除了后人发现有居住房屋、农牧业生产等 的遗迹,还留下文字印章。古代印度广阔,包括现在的南亚次大陆,即印度、 巴基斯坦和孟加拉等国,他们称自己为赡部......

    2021-06-16 故事会
  • 汕头南澳岛旅游全攻略(美到窒息汕头南澳岛)

    美到窒息汕头南澳岛五一临近,是否正在纠结去哪里游玩,喜欢拍照的小伙伴有福音了先来个自我介绍吧,本人汕头南澳岛土生土长岛民,自19岁起长期定居广州,是一枚摄影爱好者,去过广东周边海域,自认为老家南澳岛的海域相比其他周边海。...

    2023-06-06 故事会
  • 特种作业操作证都是哪些工种(特殊工种特种作业人员)

    特殊工种特种作业人员最近,被问到了一些关于特种作业、特殊工作、特种设备的一些问题,比如:特殊工种是不是和特种作业人员一样?叉车工是不是特种作业人员?特种设备操作人员是不是和特种作业人员一样?特种作业人员有焊工,特种设备操。...

    2023-05-14 故事会
  • 因战争失散多年老夫妻重聚(美国98岁老兵重逢92岁初恋)

    美国98岁老兵重逢92岁初恋在第二次世界大战期间,曾经有过这么一段凄美的爱情故事:一个年轻英俊的美国军人,在二战期间,爱上了一位来自法国小镇上的美丽姑娘然而短短两个月的相处后,他们不得不面临分离这个美国军人在即将前往东线时,他与。...

    2023-05-11 故事会
  • 不再让你孤单歌词(不再让你孤单歌词是什么)

    不再让你孤单歌词是什么让我轻轻的吻着你的脸擦乾你伤心的眼泪让你知道在孤单的时候还有一个我陪着你让我轻轻的对着你歌唱像是吹在草原上的风只想静静听你呼吸紧紧拥抱你到天明路遥远我们一起走我要飞翔在你每个彩色的梦中陪着你我从遥远的。...

    2023-06-12 故事会
  • 火影忍者阿飞到底是什么人(阿飞是不是带土)

    阿飞是不是带土火影忍者虽然早已完结,但有些人还是搞不懂晓组织中阿飞和带土到底什么关系,到底是不是一个人,面具下面到底是谁,下面就为大家分析一下宇智波带土大家都非常熟悉,是火影非常重要的人物,贯穿了整部火影的剧情,刚。...

    2023-04-18 故事会
  • nokia官方网站(NokiaStyle通过FCC认证)

    NokiaStyle通过FCC认证继日前现身中国质量认证中心(CQC)和WiFi联盟之后,型号为“TA-1448”的NokiaStyle近日通过了FCC机构的认证从认证文件来看,该机高度为166.1毫米,宽度为76.4毫米它还展示了手。...

    2023-05-18 故事会
  • 第30届香港电影金像奖谢霆锋(十年香港金像奖最值得铭记的N个瞬间)

    十年香港金像奖最值得铭记的N个瞬间引子5月6号下午三点,香港电影金像奖协会董事局主席尔冬升,准时出现在直播的镜头前不到12分钟后,39届香港电影金像奖,18个奖项,尽数颁出有人感慨“史上最快颁奖”,唰唰唰连珠炮,毫无喘息之机,实在刺激。...

    2023-05-11 故事会
  • 楹联小故事:半个举人孙筱斋

    【楹联小故事:半个举人孙筱斋】简介:清朝末年,民国初年,寿县城关有个人叫做孙多干,字筱斋。他博学多才,工于诗文,尤其擅长对联。他锦心绣口、触处生春、雅俗不避。 寿县人戏称孙筱斋为半个举人。何为“半...

    2021-06-16 故事会
  • 天猫双11成交额最终纪录(天猫双11历年交易额汇总)

    天猫双11历年交易额汇总【天猫双11历年交易额汇总】2009年双11GMV是5200万,在那之前11月11日还只是“光棍节”的代名词,那时天猫还叫淘宝商城2010年双11平均每秒超过2万元交易,总成交额9.36亿2011年,。...

    2023-05-04 故事会
你可能感兴趣