我看到領導開發人員編寫這樣的代碼,並在閱讀馬克·席曼的書「依賴注入.NET」我想知道如果具體的「新」是「外國」,因此「混蛋注入」?這是「混蛋注入反模式」的好例子嗎?
public class SessionInitServiceManager
{
protected readonly ICESTraceManager _traceManager;
protected readonly ILogger _logger;
protected readonly IAggregateCalls _aggregator;
protected readonly IMultiCoreRepository _repository;
public SessionInitServiceManager(ICESTraceManager traceManager,
ILogger logger,
IAggregateCalls aggregator,
IMultiCoreRepository repository)
{
_traceManager = traceManager;
_logger = logger;
_aggregator = aggregator;
_repository = repository;
}
public SessionInitServiceManager() : this(new CESTraceManager(),
new Logger("BusinessServices.authenticateUser"),
new Aggregator(),
new RepositoryFactory().BuildMultiCoreRepository()) { }
順便說一句,四個參數被推向極限明智的DI(作者指出,他的限制通常是4),因爲它迫使你開始質疑SessionInitServiceManager是否違反SRP。傳遞另一個經理類也表明這可能是這樣的。 – RichK
是的,我記得讀到3-4是一般的限制,如何避免這個新問題的例子有或沒有像IOC容器一樣? –
答案取決於是否任何'默認'實現定義在同一個庫或不同的libr元。 http://stackoverflow.com/questions/6733667/is-there-an-alternative-to-bastard-injection-aka-poor-mans-injection-via-defa/6739953#6739953 –