服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - Java教程 - Java 设计模式之适配器模式详解

Java 设计模式之适配器模式详解

2022-07-16 12:01不侠居 Java教程

设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性

定义

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

结构图

Java 设计模式之适配器模式详解

如图所示,两脚插头如何能插入三脚插座,可以在中间加一个适配器进行转换,就能实现两脚插头能插入三脚插座。

使用场景

  • 新的代码兼容旧的代码
  • 使用别人好的代码到自己的代码中

代码实现

适配器模式有:对象适配器和类适配器

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

延伸 · 阅读

精彩推荐