簡體   English   中英

初始化需要網絡調用 Java 的 object 的最佳實踐

[英]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.

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