1
public IRedirect FactoryStrategyRedirect()
{
if (_PasswordExpired) {
return _UpdatePasswordRedirectorFactory.Create();
} else {
return _DefaultRedirectorFactory.Create();
}
}
這種策略工廠方法可以與類型綁定,當更換條款:是否適合在類型綁定DI框架中實現業務邏輯?
Bind<IRedirect>.To<UpdatePasswordRedirector>.When(c=> c.kernel.get<SomeContext>().PasswordExpired())
Bind<IRedirect>.To<DefaultRedirector>.When(c=> not c.kernel.get<SomeContext>().PasswordExpired())
我不知道這兩種方法是比較正確的。優缺點都有什麼。
特別是在邏輯更復雜的情況下,需要測試更多變量以及更多具體的類才能返回。
是否正確地在綁定中實現業務邏輯?
我完全同意。 有人可能會添加一個信號燈,當「組合根」是動態的時候,如上例所示,使用經典的AbstractFactory來實現它會很好嗎? – Martino
你是什麼意思的動態組合根?請注意,抽象工廠模式在應用依賴注入時仍然是一個非常有效的模式。 – Steven
對不起,但也許更正確的終點是「動態對象圖」。我的意思是在運行時爲相同的根對象存在多個對象圖。在運行時依賴於上下文而不是由配置變量來選擇對象praph的「歧視性」。 – Martino