Java适配器模式_动力节点Java学院整理

2025-05-29 0 45

一.概念

适配器模式将一个接口转换成客户希望的另外一个接口。它使得原来由于接口不兼容而不能在一起工作的那些类可以一起工作。

二.uml

Java适配器模式_动力节点Java学院整理

三.更加生动的例子

Java适配器模式_动力节点Java学院整理

Java适配器模式_动力节点Java学院整理

四.实例分析

去年买了一个本本,另外给本本配了罗技g1光电套。坑爹的是,光电套的鼠标是usb接口,键盘是ps2接口,可我的本本却没有ps2接口啊。于是跑到市场,淘了一个转接器。

于是乎,我抽象了这么几个类。

Java适配器模式_动力节点Java学院整理

1.ps2port(ps2接口)。

2.usbport(usb接口)。

3.ps2tousb(对象适配器),将ps2接口装换成usb接口。

4.testadapter(测试类),客户端。

ps2port

?

1

2

3

4

5

6

7

8

9

10
package com.bjpowernode.adapter;

/**

* ps2接口,圆口

* @author eason

*

*/

public interface ps2port {

public void workwithps2();

}

usbport

?

1

2

3

4

5

6

7

8

9

10

11
package com.bjpowernode.adapter;

/**

* usb接口,u口

* @author eason

*

*/

public interface usbport {

public void workwithusb();

}

ps2tousb

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26
package com.bjpowernode.adapter;

/**

* 对象适配器

* 将ps2接口装换成usb接口

* 所以此类类型是usb接口(implements usbport) + 成员变量ps2port

* @author eason

*

*/

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工作中");

}

}

testadapter

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28
package com.bjpowernode.adapter;

/**

* 测试类

* client

* @author eason

*

*/

public class testadapter {

public static void main(string[] args) {

//我现在有一个ps2接口

ps2port ps2port = new ps2port() {

@override

public void workwithps2() {

system.out.println("ps2工作中");

}

};

//但是我需要的是一个usb接口啊,对我(client)来说,我只认识usb接口

//经过ps2tousb的转换,ps2接口变成了usb接口

usbport ps2tousbport = new ps2tousb(ps2port);

ps2tousbport.workwithusb();

}

}

五.对象的适配器和类的适配器

上述的适配器就是对象适配器。再看看类适配器。

Java适配器模式_动力节点Java学院整理

ps2tousb,只是简单模拟一下。因为java不允许多继承,所以java中没有类模式的代码,只有思想。

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16
package com.bjpowernode.adapter;

/**

* 类适配器

* @author eason

*

*/

public class ps2tousb implements usbport, ps2port{

//重写workwithusb,把工作交给workwithps2

@override

public void workwithusb() {

workwithps2();

}

}

差别就是:对象适配器实现了客户端想要的接口(usb),在内部有一个被适配对象(ps2)的引用,通过组合实现适配功能。类适配器实现了客户端想要的接口(usb)和被适配对象接口(ps2),通过继承来实现适配功能。

六.使用场景及使用感受

1.希望复用一些现存的类,但是接口又与复用环境要求不一致。

2.其实适配器模式有点无奈之举,在前期设计的时候,我们就不应该考虑适配器模式,而应该考虑通过重构统一接口。

七.适配器模式与装饰者模式

它们都可以用来包装对象,本质区别在于

1.适配器模式:将一个接口转换成另外一个接口。

2.装饰者模式:不改变接口,只加入职责。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 Java适配器模式_动力节点Java学院整理 https://www.kuaiidc.com/115714.html

相关文章

发表评论
暂无评论