簡體   English   中英

使用 noSuchMethod 在 Dart 中進行代理嗎?

[英]Do proxy in Dart by using noSuchMethod?

我有許多服務類,它們只是執行 http 請求,我想計算當前正在運行的 http 請求的數量。 我天真的想法是使用像 -

int currentRunHttpRequestCounter = 0;

class MyProxy {
  noSuchMethod() {
    currentRunHttpRequestCounter+=1;
    magically_call_the_original_class(...);
    currentRunHttpRequestCounter-=1;
  }
}

但是,我不知道如何magically_call_the_original_class 換句話說,如何創建一個代理,將每個方法調用向下傳遞到原始 class?

謝謝!

使用 static 計數器創建一個抽象 HTTP 服務。 在該抽象服務內部使用計數器並在您的 HTTP 方法中記錄。

然后將該服務擴展為模擬或真實服務,每次調用它都會更新計數器。


class Counter {
  var getCount = 0;
}

abstract class HttpService {
  static Counter counter = Counter();
  
  Future<dynamic> get(Map<String, dynamic> query) {
    counter.getCount++;
    // use for logging ect
  }
}

class HttpMockedService extends HttpService {
  @override
  Future get(Map<String, dynamic> query) {
    // TODO: implement get
    super.get(query);
  }
}

class HttpRealService extends HttpService {
  @override
  Future get(Map<String, dynamic> query) {
    // TODO: implement get
    super.get(query);
  }
}

這是簡化的解決方案,但您可以使用多種方法。

暫無
暫無

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

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