我需要从外部API获取数据,只能通过VPN访问。开发/测试机器并不总是能够连接到VPN。
期望的行为是使用两个不同的……
将它们用于这个孤立的设计问题是不是有点过分了!?
他们可能是。那些IoC容器只在你编写松散耦合的代码时才能帮助你。例如,如果你没有按照SOLID原则设计你的类,那些框架可能只会妨碍你。另一方面,哪个开发人员不想编写松散耦合的代码?换一种说法, IoC容器解决了您可能没有的问题,但这是一个很好的问题。
StructureMap和Unity [...]似乎只适用于MVC
那些ioc框架可以在任何类型的应用程序中使用(只要它以松散耦合的方式编写)。某些类型的应用程序需要更多的工作来插入框架,但它始终是可能的。 StructureMap和Unity可能只有MVC集成包,在ASP.NET Web Forms中也很容易使用它们。
是否有设计模式或最佳实践方法 特殊情况?
你要找的是什么 代理模式 也许是 断路器模式 。
IoC /依赖注入听起来像是正确的方法,但是对于简单的场景,您不一定需要容器。关键是让依赖于API的类引用接口 IAPI ,并将其传递给实际的实现 RealAPI 要么 FakeAPI 。
IAPI
RealAPI
FakeAPI
public class SomeClass { private readonly IAPI _api; public SomeClass(IAPI api) { _api = api; } }
现在,您应该可以通过传递不同的对象来轻松切换实现 MyClass 。理论上,当您使用IoC方法时,您应该只需要在应用程序的顶层将接口绑定到实现一次。
MyClass