适配器模式

举报
小鲍侃java 发表于 2021/09/10 23:55:07 2021/09/10
【摘要】 目的:原接口的参数等不满足现有条件,或者完全不同,同时不想改变原接口。 优点:1.可以让任何两个没有关联的类一起运行            2。提高了类的复用,解决了现存类和复用环境要求不一致的问题 缺点:增加了类的数量,增加了结构的复杂性。 类适配器: 适配器需要实...

目的:原接口的参数等不满足现有条件,或者完全不同,同时不想改变原接口。

优点:1.可以让任何两个没有关联的类一起运行

           2。提高了类的复用,解决了现存类和复用环境要求不一致的问题

缺点:增加了类的数量,增加了结构的复杂性。

类适配器:

适配器需要实现接口

类图:

这里写图片描述

代码:

 

新增的接口(想调用老接口)


  
  1. interface Target
  2. {
  3. public void newMethod();
  4. }

原有的接口


  
  1. public interface OldMethod{
  2. void oldMethod();
  3. }

原有的接口实现


  
  1. public class OldMethodImpl implements OldMethod{
  2. @Override
  3. public void oldMethodImpl()
  4. {老方法,被调用");
  5. }
  6. }

适配器


  
  1. public class Adapter extends OldMethodImpl implements NewMethod{
  2. @Override
  3. public void newMethod() {
  4. oldMethodImpl();
  5. }
  6. }

调用


  
  1. public class App {
  2. public static void main(String[] args) {
  3. Target target= new Adapter();
  4. target.newMethod();
  5. }
  6. }

 

类适配器:

采用组合方式

类图:

这里写图片描述

代码:

适配器类


  
  1. class ObjectAdapter implements Target
  2. {
  3. private OldMethodImpl oldMethodImpl ;
  4. public ObjectAdapter(OldMethodImpl oldMethodImpl)
  5. {
  6. this.oldMethodImpl=oldMethodImpl;
  7. }
  8. public void newMethod()
  9. {
  10. oldMethodImpl.oldMethodImpl();
  11. }
  12. }

调用


  
  1. public class ObjectAdapterTest
  2. {
  3. public static void main(String[] args)
  4. {
  5. OldMethodImpl oldMethodImpl = new OldMethodImpl();
  6. Target target = new ObjectAdapter(adaptee);
  7. target.newMethod();
  8. }
  9. }

 

文章来源: baocl.blog.csdn.net,作者:小黄鸡1992,版权归原作者所有,如需转载,请联系作者。

原文链接:baocl.blog.csdn.net/article/details/102561498

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。