Swift 结合中心观察者模式使用SwInject

Swift 结合中心观察者模式使用SwInject,swift,dependency-injection,observer-pattern,swinject,Swift,Dependency Injection,Observer Pattern,Swinject,我正在使用SWInject来维护我的应用程序中的依赖关系,使用Coordinator模式来管理逻辑和依赖关系 SWInject能否与应用程序不同部分具有多个观察者的集中式推送通知框架结合使用 通常,我使用单例类来实现这一点,但这样做似乎违背了使用依赖项注入模式的目的。DI在general中尝试将“如何使用依赖项”与“如何获得依赖项”分开。在大多数情况下,后者不应成为对象知识的一部分 在您的例子中,notification center哪个对象用于broadacst/接收内容是一个单例,这一事实应

我正在使用SWInject来维护我的应用程序中的依赖关系,使用Coordinator模式来管理逻辑和依赖关系

SWInject能否与应用程序不同部分具有多个观察者的集中式推送通知框架结合使用


通常,我使用单例类来实现这一点,但这样做似乎违背了使用依赖项注入模式的目的。

DI在general中尝试将“如何使用依赖项”与“如何获得依赖项”分开。在大多数情况下,后者不应成为对象知识的一部分

在您的例子中,
notification center
哪个对象用于broadacst/接收内容是一个单例,这一事实应该与您如何实现给定对象无关


DI方法是将其作为依赖项传递,并让其他人担心其他人可能正在使用同一实例。当然,在后台,它可能仍然是一个单例,但您可以在需要时更改这一事实(例如测试),而无需更改使用它的对象的任何内容

general中的DI试图将“我如何使用依赖关系”与“我如何获得依赖关系”分开。在大多数情况下,后者不应成为对象知识的一部分

在您的例子中,
notification center
哪个对象用于broadacst/接收内容是一个单例,这一事实应该与您如何实现给定对象无关


DI方法是将其作为依赖项传递,并让其他人担心其他人可能正在使用同一实例。当然,在后台,它可能仍然是一个单例,但您可以在需要时更改这一事实(例如测试),而无需更改使用它的对象的任何内容

这实际上是一个非常好的观察结果。在后台,它可能是一个单例,但只要您可以根据需要更改它(也称为测试)->而不是在类中初始化一个单例,这实际上是一个很好的观察结果。在后台,它可能是一个单例,但只要您可以根据需要更改它(也称为测试)->而不是在类本身初始化一个单例,就可以了