繁体   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