簡體   English   中英

我有一個帶有多個實現(非域適配器)的接口(域端口)。 選擇使用哪個適配器 go 的邏輯在哪里?

[英]I have an interface (domain port) with several implementations (non-domain adapters). Where does the logic for choosing which adapter to use go?

假設我有一個需要調用客戶端的用例,定義為接口、端口。

我想為該端口使用一個實現(適配器)或另一個; 並且選擇使用哪一個取決於業務邏輯 - 例如,用戶所在的國家/地區或更復雜的計算。

就設計模式而言,那種氣味對我來說有點像工廠; 我可以只輸入一個 function 來返回接口,其邏輯根據特定條件返回不同的實現。

但是,我無法將其與我的體系結構知識以及什么是領域和不是領域相結合:

  • 如果我創建一個域 function 並在一個適配器或另一個適配器之間進行選擇,我需要將適配器(非域代碼)導入到我的域中,這樣我才能返回正確的適配器。 這是錯誤的,因為我讓實現成為業務邏輯的一部分。

  • 另一方面,我可以有一個“適配器適配器”:我通過端口“泄漏”選擇適配器所需的數據作為合同的一部分,並且我有一個“包裝適配器”,我總是使用它端口,它將調用重定向到任何可能的第三個適配器之一。 這也是錯誤的,因為我在域之外有業務邏輯(如何選擇一個或另一個適配器),並且適配器調用其他適配器(?)。

我怎么解決這個問題? 有沒有我沒有看到的第三種選擇?

如果適配器實現的接口(業務邏輯)提供工廠所需的信息來決定使用哪個實現,那么工廠也可以是業務邏輯。

在您的示例中,該接口可以提供 API 提供實施可用於的國家/地區。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM