我当前的项目中有多个课程,例如HTMLRequest
, SPDYRequest
, BHIVERequest
. 我从网络流中获取数据,我想知道哪些类可以处理这些数据。为此,我读取了 Stream 数据包的标头(所有协议都采用相同的形式,因此我可以一直阅读,直到得到空行 (\r\n) ),然后将此标头传递给请求类中的静态函数,该函数返回一个布尔值,它告诉它是否是这种请求的标头。现在我希望能够在运行时(从插件)加载特定的协议。能够检查我是否有标题协议的最佳方法是什么。
我的想法是:
一个额外的类
Protocol
作为单例,然后在 a 中注册RequestFactory
,然后必须找出哪个协议可以为这种头创建请求并调用 Protocol.assemble()一个静态列表,
Class<? extends Request>
所以我可以通过反射或通过调用静态方法Class.newInstance()
我不喜欢这两种想法,那么在 Java 中动态地做这些事情的正确方法是什么?