OOP:继承应用不当?

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

我认为我应用继承不当。

这是我的界面

ResourceProvider
:

public interface ResourceProvider {

    ResourceLocation generatePushResourceLocation(DocumentId documentId);

    ResourceLocation generatePullResourceLocation(DocumentId documentId);

}

我正在尝试对所有

ResourceProvider
都必须遵循的单一方法签名进行建模。

子类:

S3ResourceProvider
BlobResourceProvider
URLResourceProvider
...

最初,它们似乎都可能表现出相同的行为,但例如,

S3ResourceProvider
需要一个
bucket
和一个
key
,而
URLResourceProvider
只需要一个URL......”

用例是我的服务必须能够处理创建资源的请求。我想要实现的是对任何类型的

ResourceProvider
有一个统一的访问点,但我同时发现它们都有不同的参数。

关于如何制定良好的继承/组合策略有什么想法吗?

java oop
1个回答
0
投票

您可以使用

URI
代替
ResourceLocation
。对于 URL,它类似于“https://service/docs/some.doc”,对于 S3,类似于“S3://mybucket/some.doc”等。

© www.soinside.com 2019 - 2024. All rights reserved.