我正在创建一个类,该类应该使用 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
你的界面不太具体。它只有单一方法(又名函数式接口)——根据定义,它是最小且最可组合的抽象。您将来将轻松创建新的实现。
但是
throws Exception
太笼统了。有3种方法可以更改:
RuntimeException
而不是仅通用检查 Exception
。UploadException
。更多提示:
Uploader
,而不是 uploader
)。这是Java约定。upload
方法参数使用包装类,而不是 String presignedUrl, InputStream inputStream
。