[英]Decoupling from 3rd party library
我正在使用第三方HTTP客戶端進行GET,POST調用。 我不想將我的代碼綁定到該庫。 因此,我決定創建一個名為HttpClient的接口和一個名為HttpClientImpl的實現。
界面中的方法之一是:
Response get(String url);
從接口返回的Response對象是第三方庫中的對象。 因此,從技術上講,這不會使我的代碼與第三方庫脫鈎。
解耦自我的最佳方法是什么? 我應該創建自己的響應對象來包裝第三方庫的響應嗎?
這是介體設計模式的經典案例:使用HTTP客戶端的類既不應該暴露給HTTP客戶端實現(您已經封裝了),也不應該暴露給它的響應對象。
在這種情況下,在此處使用泛型將不會阻止using類知道響應類。
如您所建議-具有包裝響應類/從第3方響應轉換為您自己的響應方。
您是否考慮過抽象通過Http訪問的存儲庫,而不是抽象http庫? 舉例來說,您擁有Tweets的寧靜端點:
GET https://someapi.com/Tweets
GET https://someapi.com/Tweets/{id}
POST https://someapi.com/Tweets
PUT https://someapi.com/Tweets/{id}
DELETE https://someapi.com/Tweets/{id}
擁有一個TweetRepository
類是TweetRepository
該類可以創建,讀取,更新和刪除tweet。 此類的接口可能類似於以下內容:
public interface TweetRepository {
public List<Tweet> get();
public int add(Tweet tweet);
public void remove(int id);
public Tweet get(int id);
public void update(int id, Tweet tweet);
}
如果您的控制器使用該接口,那么您可以使實現使用您想要的任何http庫,而無需引入耦合。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.