所以我正在编写一个 Web 服务架构,其中包括FunctionProvider
实际处理请求的类,以及一个Endpoint
接收请求并将请求委托给适当的主类FunctionProvider
。
我不确切知道FunctionProvider
运行时可用的 s ,所以我需要能够在我的主Endpoint
类中“注册”(如果这是正确的词)它们,并查询它们以查看它们是否与传入的请求匹配。
public class MyFunc implements FunctionProvider{
static {
MyEndpoint.register(MyFunc);
}
public Boolean matchesRequest(Request req){...}
public void processRequest(Request req){...}
}
public class MyEndpoint{
private static ArrayList<FunctionProvider> functions = new ArrayList<FunctionProvider>();
public void register(Class clz){
functions.add(clz);
}
public void doPost(Request request){
//find the FunctionProvider in functions
//matching the request
}
}
我真的没有做太多像这样的反射 Java(上面可能是错误的,但希望能证明我的意图)。
什么是最好的方法来实现这一点而不会变得 hacky?