Java适配器模式_动力节点Java学院整理
Java适配器模式 Java适配器模式是指将一个接口转换成客户希望的另外一个接口,使得原来由于接口不兼容而不能在一起工作的那些类可以一起工作。它是一种结构型模式,它可以帮助我们更好地实现接口之间的转换。 概念 适配器模式将一个接口转换成客户希望的另外一个接口。它使得原来由于接口不兼容而不能在一起工作的那些类可以一起工作。这种模式可以应用于很多场景,例如当我们需要使用一个已经存在的类,但它的接口不符合我们的需求时,我们可以使用适配器模式来将其转换成我们需要的接口。 UML 适配器模式的UML图可以表示为: (Target)->(Adapter)->(Adaptee) 其中,Target是客户希望的接口,Adapter是适配器,Adaptee是被适配的对象。 更加生动的例子 例如,我们买了一个本本,另外给本本配了罗技G1光电套。坑爹的是,光电套的鼠标是USB接口,键盘是PS2接口,可我的本本却没有PS2接口啊。于是我们需要一个转接器来将PS2接口转换成USB接口。 实例分析 我们可以抽象出以下几个类: 1. PS2Port(PS2接口) 2. USBPort(USB接口) 3. PS2ToUSB(对象适配器),将PS2接口装换成USB接口。 4. TestAdapter(测试类),客户端。 其中,PS2ToUSB是对象适配器,它实现了USBPort接口,并持有一个PS2Port对象的引用。这样,当我们需要使用PS2Port对象时,我们可以使用PS2ToUSB对象来将其转换成USBPort对象。 代码实现 ```java package com.bjpowernode.adapter; public interface PS2Port { public void workWithPS2(); } public interface USBPort { public void workWithUSB(); } public class PS2ToUSB implements USBPort { private PS2Port ps2Port; public PS2ToUSB(PS2Port ps2Port) { this.ps2Port = ps2Port; } @Override public void workWithUSB() { System.out.println("转换的关键在这里,本来是"); ps2Port.workWithPS2(); System.out.println("经过你的转换,现在是USB工作中"); } } public class TestAdapter { public static void main(String[] args) { PS2Port ps2Port = new PS2Port() { @Override public void workWithPS2() { System.out.println("PS2工作中"); } }; USBPort ps2ToUsbPort = new PS2ToUSB(ps2Port); ps2ToUsbPort.workWithUSB(); } } ``` 对象适配器和类适配器 对象适配器和类适配器是两种不同的适配器模式。对象适配器实现了客户端想要的接口,在内部有一个被适配对象的引用,通过组合实现适配功能。类适配器则是使用继承的方式来实现适配功能。但是由于Java不允许多继承,所以Java中没有类模式的代码,只有思想。 ```java public class PS2ToUSB implements USBPort, PS2Port { //重写workWithUSB,把工作交给workWithPS2 @Override public void workWithUSB() { workWithPS2(); } } ``` 适配器模式可以帮助我们更好地实现接口之间的转换,使得原来由于接口不兼容而不能在一起工作的那些类可以一起工作。
- 粉丝: 9
- 资源: 935
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助