依赖注入刷新逻辑位置

发布于 2024-12-04 13:38:20 字数 90 浏览 0 评论 0原文

我对这里的依赖注入完全陌生。

如果我正在使用依赖注入构建 Twitter 客户端,那么控制以特定时间间隔(例如 5 分钟)刷新流的逻辑应该放置在哪里?

I'm completely new to dependency injection here.

If I were building say a twitter client using dependency injection, where should the logic that controls refreshing my stream at a specific interval (say 5 minutes) be housed?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

芯好空 2024-12-11 13:38:20

当您选择使用依赖注入时,您选择定义隐藏实现细节的抽象。最大的挑战之一是在设计抽象时忘记实现细节。

虽然您可能知道您将定期轮询 HTTP 服务,但您不必根据该假设来定义抽象。

想象一下,情况有很大不同 - 例如,相关服务可以将更新推送给客户端。抽象仍然成立吗?

  • 如果您围绕客户端是轮询消费者这一假设构建抽象,它可能不太适合如果您需要在事件驱动的消费者上实现它。
  • 有趣的是,使用基于轮询的技术来模拟事件驱动的消费者会更容易。

即使您从未期望使用轮询消费者以外的任何其他东西,上面的内容仍然是一个很好的练习,因为它迫使您考虑是否设计了一个有漏洞的抽象。

因此,回答这个问题:刷新逻辑属于数据访问实现

When you choose to use Dependency Injection, you choose to define abstractions that hide away implementation details. One of the biggest challenges is to forget about the implementation details while designing the abstractions.

While you may know that you'll be polling an HTTP service regularly, you shouldn't necessarily define your abstractions based on that assumption.

Imagine that things are very much different - for example that the service in question could push updates to the client. Would the abstraction still hold?

  • If you build the abstraction around the assumption that the client is a Polling Consumer, it may not fit well if you'd need to implement it on an Event-Driven Consumer instead.
  • Interestingly enough, it's easier to simulate an Event-Driven Consumer with poll-based technology.

Even if you never expect to use anything else than a Polling Consumer, the above is still a good exercise to do, because it forces you to consider whether or not you've designed a leaky abstraction.

So, to answer the question: the refresh logic belongs in the data access implementation.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文