У меня есть класс обслуживания, который должен вызывать API, отличные от других.Но у каждого API есть свои ограничения, поэтому я использую Ratelimiter Guava для обеспечения ограничения операции
@Singleton
public class A {
private final RateLimiter apiCallX;
private final int timeoutInSecondsForAPIX;
private final RateLimiter apiCallY;
private final int timeoutInSecondsForAPIY;
@Inject
public A ( @Named("apiCallXRateLimiter") apiCallX,
@Named("apiCallXRateLimiter") apiCallY,
@Named("apiCallXRateLimiter") apiCallZ,
){
this.apiCallX = apiCallX;
...
}
public ResponseX callAPIX (){
...
}
public ResponseY callAPIY (){
...
}
private modelTransformer(){ //each for request and response and for each call.
...
}
}
Я думаю использовать наследование, чтобы избежать кластеризации всех вызовов операций из этого класса.Какие другие шаблоны проектирования я мог бы использовать в этом сценарии?