我有三种或更多类型的请求,它们以JSON数据的形式出现并转换为对象。
假设有一个请求:
{
"id":1,
"type":"0",
"url":
"http://stackoverflow.com"
}
我想建立一些让我能够获得这样的页面的conncetion工厂:
Request request = new Request(json);
Response response = request.execute();
当然,execute
方法对每个请求的类型都有不同的实现。
我有一个用普通JavaSE编写的原型,我想迁移到Spring Framework,如果有问题,也可以得到一些关于我的代码的反馈。首先,我构建了一个SimpleRequest
来获取页面并返回正文。
class SimpleRequest implements Request{
Package requestData;
@Override
public Connection.Response execute() throws IOException {
Connection.Response response = Jsoup
.connect(requestData.getUrl())
.execute();
return response;
}
public void bind(Package requestData){
this.requestData = requestData;
}
}
此方法只是获取页面。没什么有趣的。
我也有RequestTemplate
准备请求:
class RequestTemplate{
Package requestData;
RequestFactory requestFactory = new RequestFactory();
Request request;
public RequestTemplate(Package requestData){
this.requestData = requestData;
try {
request = requestFactory.getRequestInstance(requestData.getType());
request.bind(requestData);
}catch (Exception e){
e.printStackTrace();
}
}
public Connection.Response execute(){
Connection.Response connection = null;
try{
connection = request.execute();
}catch (Exception e){
e.printStackTrace();
}
return connection;
}
}
此方法获取基于RequestType
;
当然我有RequestFactory
,它有对象的描述并创建它们的新实例。
class RequestFactory{
public Request getRequestInstance(RequestType type) throws Exception {
switch (type){
case SIMPLE:
return new SimpleRequest();
default:
throw new Exception("Error");
}
}}
因此我们检查与枚举列表匹配的RequestType
类型并返回新实例。
我还在基于Spring Framework的小项目中实现类似的东西,有两个问题。
据我所知,上面的代码有点乱,并且有一些性能问题。我认为我将使用代码来提供大量连接,因此我必须以某种方式优化它,因为内存限制等等。
与Spring集成。这是一个框架,所以我认为应该有一些功能可以让我的生活更轻松。我已经阅读了有关FactoryBean的内容,但还没有找到如何将其与我的任务联系起来。正如我上面提到的,代码有点乱,我认为我创建了很多抽象。
感谢。