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

网友投稿 310 2022-09-16


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

目录定义结构图使用场景代码实现java代码实现python代码实现

定义

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

结构图

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

使用场景

新的代码兼容旧的代码

使用别人好的代码到自己的代码中

代码实现

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

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 TvRFfwZLKarget(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()

adhttp://aptee =http:// Adaptee()

adapter = Adapter()

target.aaa()

adaptee.bbb()

adapter.aaa()

运行结果:

Target

Adaptee

Adaptee


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:查看主机端口属于那台交换机ip地址,及端口号(交换机端口对应IP地址)
下一篇:STP(stp协议)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~