经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » Java相关 » 设计模式 » 查看文章
Java 设计模式之适配器模式详解
来源:jb51  时间:2021/11/8 17:18:49  对本文有异议

定义

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

结构图

在这里插入图片描述

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

使用场景

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

代码实现

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

Java代码实现

java没有多继承,只能实现对象适配器
先创建两个接口

  1. // 适配目标接口
  2. public interface Target{
  3. public void aaa();
  4. }
  1. // 适配者接口
  2. public interface Adaptee{
  3. public void bbb();
  4. }

实现这两个接口

  1. public class Targetimpl implements Target{
  2. public void aaa(){
  3. System.out.printnln("Target")
  4. }
  5. }
  1. public class Adapteeimpl implements Adaptee{
  2. public void bbb(){
  3. System.out.printnln("Adaptee")
  4. }
  5. }

制作适配器
需要实现要适配成什么接口,需要实现什么接口

  1. public class Adapter implements Target{
  2. Adaptee adaptee;
  3. public Adapter(Adaptee adapter){
  4. this.adaptee = adaptee;
  5. }
  6. public void aaa(){
  7. adaptee.bbb()
  8. }
  9. }
  1. public class Run{
  2. public static void main(String[] args){
  3. Adaptee adaptee = new Adatee();
  4. Target target = new Targetimpl();
  5. Target adapter = new Adapter(target);
  6. adaptee.aaa();
  7. target.bbb();
  8. adapter.aaa();
  9. }
  10. }

运行结果:

Target
Adaptee
Adaptee

Python代码实现

Python可以实现对象适配器和类适配器

这是对象适配器

  1. # 适配目标
  2. class Target(object):
  3. def aaa(self):
  4. print("Target")
  5. # 被适配者
  6. class Adaptee(object):
  7. def bbb(self):
  8. print("Adaptee")
  9.  
  10. # 这是适配器
  11. class Adapter(Target):
  12. def __init__(self, Adaptee):
  13. self.Adaptee = Adaptee
  14. def aaa(self):
  15. self.Adaptee.bbb()
  16.  
  17. target = Target()
  18. adaptee = Adaptee()
  19. adapter = Adapter(adaptee)
  20. target.aaa()
  21. adaptee.bbb()
  22. adapter.aaa()

运行结果:

Target
Adaptee
Adaptee

这是类适配器

  1. class Target(object):
  2. def aaa(self):
  3. print("Target")
  4.  
  5. class Adaptee(object):
  6. def bbb(self):
  7. print("Adaptee")
  8.  
  9. class Adapter(Target, Adaptee):
  10. def aaa(self):
  11. self.bbb()
  12.  
  13. target = Target()
  14. adaptee = Adaptee()
  15. adapter = Adapter()
  16. target.aaa()
  17. adaptee.bbb()
  18. adapter.aaa()

运行结果:

Target
Adaptee
Adaptee

到此这篇关于Java 设计模式之适配器模式详解的文章就介绍到这了,更多相关Java 设计模式内容请搜索w3xue以前的文章或继续浏览下面的相关文章希望大家以后多多支持w3xue!

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号