我創建一個應用程序,我使用的外牆設計模式,其中請求將經過 控制器(的WebAPI) - >幕牆 - >業務 - >庫 ,我使用統一配置初始化我的對象(外觀,業務和存儲庫),在控制器層我將設置Unity配置並初始化所有對象。但我的疑問是,我可以如何將資源庫對象傳遞給業務層。 就像我在業務層使用倉庫方法調用一樣,它肯定會需要倉庫對象,所以我將它注入到業務層構造函數中。請參見下面的代碼:依賴注入
public class MessageBusiness : IMessageBusiness
{
IMessageRepository _messageRepository;
public MessageBusiness(IMessageRepository messageRepository)
{
_messageRepository = messageRepository;
}
public int AddMessage(RS.DomainEntity.Model.Message newMessage)
{
return _messageRepository.AddMessage(newMessage);
}
}
現在我應該通過從外觀層該庫對象?
public class MessageFacade : IMessageFacade
{
IMessageBusiness _messageBusiness;
public MessageFacade(IMessageBusiness messageBusiness)
{
_messageBusiness = messageBusiness;
}
public int AddMessage(RS.DomainEntity.Model.Message newMessage)
{
return _messageBusiness.AddMessage(newMessage);
}
}
如果不是那麼我可以注入這個存儲庫在我的業務層?如果是,那麼我們也需要在Façade中傳遞它,就像將對象從一層傳遞到另一層。這是正確的行爲? 另外如果你給第一個問題的答案,那麼我如何在我的外牆層進行集成測試。任何想法?任何幫助深表感謝。提前致謝。 Regards, Vivek
控制器必須包含一個使用Unity容器配置所有對象的點。 Facade只需要知道業務,它不必知道業務的實現,因此您不需要通過業務層傳遞庫。 – Alezis 2014-12-06 10:31:36