[英]Best practice for initializing an object that requires network calls Java
例如,我有一個名為 Datastore 的 object,它需要一些變量來初始化:value1、value2 和一個鍵。 這兩個值是任意的,但密鑰必須通過網絡調用 API 來驗證,應該如何設置這個 object 的初始化? 可以在構造函數內部進行網絡調用嗎? 設置器應該與無參數構造函數一起使用嗎? 建造者模式?
示例密鑰驗證
private int verifyKey(String key) {
try {
URL url = new URL("https://api.com/verifykey/" + key);
HttpUrlConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.connection();
//other implementation
} catch(Exception e) {
e.printStackTrace();
} finally {
//close connection
}
//return result
}
在大多數情況下,我認為構造函數中的代碼應該盡可能簡單。 首先因為這將更容易測試它,因為這將使您的代碼更易於使用。
您還應該查看IoC 模式Who解釋為什么您不應該在構造函數中初始化其他 object。 (或至少避免它)
並且僅使用 setter 來創建 object 並不是一個好主意,因為構造函數的 arg 將讓您定義使用此 object 所需的最小值。
此外,如果您想輕松進行異步調用並在網絡調用完成期間做一些事情,您可以嘗試使用java.util.concurrent.Future
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.