如何让界面不太具体

问题描述 投票:0回答:1

我正在创建一个类,该类应该使用 presignedUrl 将文件上传到许多 S3 存储桶。 目前,我只需将文件上传到 S3 存储桶。 但以后我就得在其他系统上传文件了。

public interface uploader {

    public void upload(String presignedUrl, InputStream inputStream) throws Exception;
}

我关心的是第一个参数

String presignedUrl
和这个:
throws Exception
我认为它太具体了,我不认为我未来的实现适合这个接口。

如何将界面设计得不那么具体?

我像这样简化了:

public interface uploader {

    public void upload(InputStream inputStream) throws Exception;
}

但是现在,我不知道如何获得我的

presigendUrl

java oop object-oriented-analysis
1个回答
0
投票

你的界面不太具体。它只有单一方法(又名函数式接口)——根据定义,它是最小且最可组合的抽象。您将来将轻松创建新的实现。

但是

throws Exception
太笼统了。有3种方法可以更改:

  1. 考虑将其替换为
    RuntimeException
    而不是仅通用检查
    Exception
  2. 使用自定义异常,例如从 RuntimeException 扩展的
    UploadException
  3. 或者从接口契约中完全删除异常。

更多提示:

  1. 接口名称以大写字母开头(例如
    Uploader
    ,而不是
    uploader
    )。这是Java约定。
  2. upload
    方法参数使用包装类,而不是
    String presignedUrl, InputStream inputStream
© www.soinside.com 2019 - 2024. All rights reserved.