定义
适配器将一个类的接口,转换成客户期望另一个接口。适配器让原本不兼容的类可以合作无间
结构图

如图所示,两脚插头如何能插入三脚插座,可以在中间加一个适配器进行转换,就能实现两脚插头能插入三脚插座。
使用场景
- 新的代码兼容旧的代码
- 使用别人好的代码到自己的代码中
代码实现
适配器模式有:对象适配器和类适配器
Java代码实现
java没有多继承,只能实现对象适配器
先创建两个接口
- // 适配目标接口
- public interface Target{
- public void aaa();
- }
- // 适配者接口
- public interface Adaptee{
- public void bbb();
- }
实现这两个接口
- public class Targetimpl implements Target{
- public void aaa(){
- System.out.printnln("Target")
- }
- }
- public class Adapteeimpl implements Adaptee{
- public void bbb(){
- System.out.printnln("Adaptee")
- }
- }
制作适配器
需要实现要适配成什么接口,需要实现什么接口
- public class Adapter implements Target{
- Adaptee adaptee;
- public Adapter(Adaptee adapter){
- this.adaptee = adaptee;
- }
- public void aaa(){
- adaptee.bbb()
- }
- }
- 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可以实现对象适配器和类适配器
这是对象适配器
- # 适配目标
- 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
这是类适配器
- 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 设计模式内容请搜索w3xue以前的文章或继续浏览下面的相关文章希望大家以后多多支持w3xue!