定义
适配器将一个类的接口,转换成客户期望另一个接口。适配器让原本不兼容的类可以合作无间
结构图
如图所示,两脚插头如何能插入三脚插座,可以在中间加一个适配器进行转换,就能实现两脚插头能插入三脚插座。
使用场景
- 新的代码兼容旧的代码
- 使用别人好的代码到自己的代码中
代码实现
适配器模式有:对象适配器和类适配器
Java代码实现
java没有多继承,只能实现对象适配器
先创建两个接口
1
2
3
4
|
// 适配目标接口 public interface Target{ public void aaa(); } |
1
2
3
4
|
// 适配者接口 public interface Adaptee{ public void bbb(); } |
实现这两个接口
1
2
3
4
5
|
public class Targetimpl implements Target{ public void aaa(){ System.out.printnln( "Target" ) } } |
1
2
3
4
5
|
public class Adapteeimpl implements Adaptee{ public void bbb(){ System.out.printnln( "Adaptee" ) } } |
制作适配器
需要实现要适配成什么接口,需要实现什么接口
1
2
3
4
5
6
7
8
9
|
public class Adapter implements Target{ Adaptee adaptee; public Adapter(Adaptee adapter){ this .adaptee = adaptee; } public void aaa(){ adaptee.bbb() } } |
1
2
3
4
5
6
7
8
9
10
|
public class Run{ public static void main(String[] args){ Adaptee adaptee = new Adatee(); Target target = new Targetimpl(); Target adapter = new Adapter(target); adaptee.aaa(); target.bbb(); adapter.aaa(); } } |
运行结果:
Target
Adaptee
Adaptee
Python代码实现
Python可以实现对象适配器和类适配器
这是对象适配器
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
# 适配目标 class Target(object): def aaa(self): print( "Target" ) # 被适配者 class Adaptee(object): def bbb(self): print( "Adaptee" ) # 这是适配器 class Adapter(Target): def __init__(self, Adaptee): self.Adaptee = Adaptee def aaa(self): self.Adaptee.bbb() target = Target() adaptee = Adaptee() adapter = Adapter(adaptee) target.aaa() adaptee.bbb() adapter.aaa() |
运行结果:
Target
Adaptee
Adaptee
这是类适配器
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
class Target(object): def aaa(self): print( "Target" ) class Adaptee(object): def bbb(self): print( "Adaptee" ) class Adapter(Target, Adaptee): def aaa(self): self.bbb() target = Target() adaptee = Adaptee() adapter = Adapter() target.aaa() adaptee.bbb() adapter.aaa() |
运行结果:
Target
Adaptee
Adaptee
到此这篇关于Java 设计模式之适配器模式详解的文章就介绍到这了,更多相关Java 设计模式内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!
原文链接:https://blog.csdn.net/m0_46778548/article/details/121061092