我认为我应用继承不当。
这是我的界面
ResourceProvider
:
public interface ResourceProvider {
ResourceLocation generatePushResourceLocation(DocumentId documentId);
ResourceLocation generatePullResourceLocation(DocumentId documentId);
}
我正在尝试对所有
ResourceProvider
都必须遵循的单一方法签名进行建模。
子类:
S3ResourceProvider
、BlobResourceProvider
、URLResourceProvider
...
最初,它们似乎都可能表现出相同的行为,但例如,
S3ResourceProvider
需要一个bucket
和一个key
,而URLResourceProvider
只需要一个URL......”
用例是我的服务必须能够处理创建资源的请求。我想要实现的是对任何类型的
ResourceProvider
有一个统一的访问点,但我同时发现它们都有不同的参数。
关于如何制定良好的继承/组合策略有什么想法吗?
您可以使用
URI
代替 ResourceLocation
。对于 URL,它类似于“https://service/docs/some.doc”,对于 S3,类似于“S3://mybucket/some.doc”等。