我一直面临一个设计问题,我发现很难解释,这可能是谷歌对我没什么帮助的原因,所以请耐心等待。
我正在尝试构建一个分层结构来帮助开发一个应用程序。层次结构由网络请求的名称组成,在内部我将拥有所需的参数以及它将返回的字段。目标是通过以下方式(伪代码)对IDE进行编码的方便和错误检查:
Request request = Requests.LOGIN;
Param param1 = request.Parameters.USERNAME;
Param param2 = request.Parameters.PASSWORD;
mapOfParameters.add(param1,"user");
mapOfParameters.add(param2,"pass");
Results results = connect(request, mapOfParameters);
Field field1 = results.getField(request.Fields.SUCCESS);
不仅代码完成有助于确切地知道需要哪些参数,而且如果我要复制并粘贴此代码,这也会突出显示错误的额外好处,因为更改请求变量会突出显示所有不属于新类型请求的元素。
我的第一次尝试是使用枚举,但我似乎无法在其他枚举中嵌入枚举,因此我尝试使用带有枚举的类。但是,我无法从其类的实例访问枚举,所以如果我要复制上面的示例来更改request
的值,我必须在每行中添加特定请求的类引用该请求,以便我可以访问枚举。因此,与第一个示例不同,IDE不会在下面示例的最后一行中发现错误:
Request request = Requests.Logout;
Param param1 = Requests.Logout.Paremeters.USERNAME;
Param param2 = Requests.Logout.Parameters.PASSWORD;
mapOfParameters.add(param1,"user");
mapOfParameters.add(param2,"pass");
Results results = connect(request, mapOfParameters);
Field field1 = results.getField(Requests.Login.Fields.SUCCESS);
我一直在不同的方法之间来回走动,我对任何方法都不满意。我也觉得我正在尝试重新发明轮子。所以我的问题是,是否存在解决这一特定问题的设计模式,还是我应该考虑其他技术/技术?