试图弄清楚如何最好地处理以下情况:
假设一个RequestContext
类依赖于外部服务,例如:
public class RequestContext : IRequestContext
{
private readonly ServiceFactory<IWeatherService> _weatherService;
public RequestContext(ServiceFactory<IWeatherService> weatherService, UserLocation location, string query)
{
_weatherService = weatherService;
...
我应该在最终实例化的类中要求什么样的依赖RequestContext
?可能是ServiceFactory<IWeatherService>
,但这似乎不对,或者我可以按照IRequestContextFactory
以下方式为它创建一个:
public class RequestContextFactory : IRequestContextFactory
{
private readonly ServiceFactory<IWeatherService> _weatherService;
public RequestContextFactory(ServiceFactory<IWeatherService> weatherService)
{
_weatherService = weatherService;
}
public RequestContext Create(UserLocation location, string query)
{
return new RequestContext(_weatherService, location, query);
}
}
然后IRequestContextFactory
通过构造函数注入。
这似乎是一个很好的方法,但这种方法的问题是我认为它阻碍了可发现性(开发人员必须了解工厂并实施它,这并不是很明显)。
我错过了更好/更容易发现的方式吗?