想象下面的构造函数
public RestClient(
string key,
Uri baseAddress,
IHttpClient httpClient,
ISerializer serializer,
IResponseFactory responseFactory)
{
_key = key;
_baseAddress = baseAddress;
_httpClient = httpClient;
_serializer = serializer;
_responseFactory = responseFactory;
}
什么时候适合创建这样的本地默认值?
public RestClient(
string key,
Uri baseAddress,
IHttpClient httpClient,
ISerializer serializer,
IResponseFactory responseFactory)
{
_key = key;
_baseAddress = baseAddress;
_serializer = serializer;
_responseFactory = responseFactory;
HttpClient = new HttpClientAdapter();
}
IHttpClient HttpClient {get; set;}
并允许使用属性注入覆盖 IHttpClient 的依赖关系。
或者消费者有责任在构造函数中传递依赖而不依赖本地默认值?Mark Seemann 在他的书中描述了当有良好的本地默认值时属性注入是合适的,但我在这个示例中努力决定首先使用本地默认值是否合适。