博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Practical API Design学习笔记】谨慎使用第三方API
阅读量:6286 次
发布时间:2019-06-22

本文共 1489 字,大约阅读时间需要 4 分钟。

    我们在设计API时,很可能需要使用第三方API,并将其暴露出去。但是这样做会有危险。当第三方API变化时,我们设计的API也会变化,因为是直接将第三方API暴露出去的。

    例如:假设String类定义如下:

public final class String {  private final char[] chars;  public String(char[] chars) {    this.chars = chars.clone();  }  public int length() {    return chars.length;  }  public char charAt(int i) {    return chars[i];  }}
    我们使用它:

Query query = new Query();String reply = query.computeReply();assertEquals("Length is correct", 5, reply.length());
    假设String类的length方法变成了getSize()方法,那么我们设计的API接口就变了。

    对于以上问题,有三种解决方案:

    1、接受它,允许我们的API随着使用并暴露出去的第三方API变化而变化;

    2、拒绝它,要求你需要有权利阻止第三方API发生变化;

    3、包装它,我们的API在使用第三方API时,将其包装一层。

    例如:

public final class Query {  public static final class Sequence {    private String data;    Sequence(String data) {      this.data = data;    }    public int length() {      return data.length();    }    public char charAt(int i) {      return data.charAt(i);    }  }  public Sequence computeReply() {    char[] hello = { 'H', 'e', 'l', 'l', 'o' };    return new Sequence(new String(hello));  }}
当第三方API的length()方法变成getSize()方法时:

public final class Query {  public static final class Sequence {    private String data;    Sequence(String data) {      this.data = data;    }    public int length() {      return data.getSize();    }    public char charAt(int i) {      return data.charAt(i);    }  }  public Sequence computeReply() {    char[] hello = { 'H', 'e', 'l', 'l', 'o' };    return new Sequence(new String(hello));  }}

    

转载于:https://my.oschina.net/tingzi/blog/132613

你可能感兴趣的文章
linux远程桌面管理(Xmanager和VNC)
查看>>
FTP服务器的搭建
查看>>
LG OLED C7/B7 (2017) Calibrated Settings for Xbox
查看>>
Windows Phone 8 开发环境的搭建
查看>>
我的友情链接
查看>>
Mac与iPhone的使用
查看>>
samba服务安装
查看>>
Shell信号发送与捕捉
查看>>
我的友情链接
查看>>
股票研究
查看>>
总结一下:linux防arp***的方法
查看>>
CISCO IOS命名规则
查看>>
广域网协议
查看>>
centos7.2+php7.0.10+mysql5.7.14+nginx1.10.1搭建LNMP环境
查看>>
linux中的NFS服务器配置及/etc/exports
查看>>
实战postfix邮件发送
查看>>
重定向
查看>>
进IBM就像移民
查看>>
***路由器备份/变更时的邮件通知
查看>>
DIY属于自己个性化的无线云热点
查看>>