在我的情况下,什么是更好的解决方案,如何设计类以使它们不是很耦合?
我有一个库(API),它提供了一些功能(例如,使用subscribe
方法订阅流媒体外汇价格)。我有一个API客户端,告诉API它想要获得哪些价格。 API使用方法SubscriptionStatus
为某些界面(例如SubscribeSuccess(Subscription) and SubscribeFailed(Subscription)
)提供反馈。在API客户端中,我有一个活动订阅列表(List<Subscription> activeSubscriptions
)。我希望API客户端只对订阅成功做出反应(只需将订阅添加到列表中)。在其他情况下 - 只需打印消息即可记录。
组织Subscription监听器和API客户端之间关系的最佳方法是什么?
选项可以是:
apiClient.addSubscription(subscription)
SubscriptionStatus
接口并管理这些事件(失败,内部成功:activeSubscriptions.add(订阅))。反对:有很多类型的动作,每个动作都有它自己的倾听者。所以Api客户端真的很大。SubscriptionSuccess(subscription)
定义自己的接口,让API客户端实现它?对主题的任何想法都表示赞赏!
谢谢!
答案 0 :(得分:1)
我会选择第2选项。如果SubscriptionStatus
接口非常大,并且您知道某些客户端只想实现其中的一部分,那么您可以提供一个基本的空超类,并让客户端扩展它(使其abstract
强制使用它们)
像BaseSubscriptionStatus
这样的东西,它对所有方法都有空实现,让用户覆盖它想要的那些。另一种选择是
throw UnsupportedOperationException("This method is not supported by your implementation of SubscriptionStatus. Please override it");
表示每个基本方法,而不是空实现。
当然,您可以保留SubscriptionStatus
接口以获得正确的依赖注入和可测试性,只有让BaseSubscriptionStatus
实现它。
答案 1 :(得分:0)
我会选择选项二。这将使最终使用最灵活,并能够在他们的情况下更有效地响应流媒体的问题。