[英]Dependency Injection in Facade layer
我正在創建一個應用程序,並且使用的是Façade設計模式,其中請求將通過Controller(webApi)->Façade-> Business-> Repository,並且我正在使用Unity config初始化我的對象(façade,business和Repository)在控制器層,我將設置Unity config並初始化所有對象。 但是我的疑問是如何將存儲庫對象傳遞到業務層。 就像我在業務層中使用存儲庫方法調用一樣,它肯定需要存儲庫對象,因此我將其注入了業務層構造函數中。 請參閱以下代碼:
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中傳遞它,就像將對象從一層傳遞到另一層一樣。 這是正確的行為嗎? 另外,如果您為第一個問題提供答案,那么我該如何在Façade層中執行集成測試。 任何想法? 任何幫助深表感謝。 提前致謝。 問候,Vivek
現在我應該從立面層傳遞此存儲庫對象嗎?
不完全是,您不必這樣做。 在像您這樣簡單的圖形中,您只需要一個統一的控制器工廠並將立面注入到控制器中即可。 Unity將完成剩下的工作,以初始化將用於業務服務的外觀,並且由於它需要存儲庫,因此,Unity將查找並注入一個存儲庫,當然前提是您預先注冊了所有實現的接口。
順便說一句。 我絕對推薦使用工作單元而不是存儲庫。 UoW更通用,並且允許客戶端訪問所有可能的存儲庫。 您可以將其視為所有存儲庫的容器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.