我对下面的问题有些疑问。有人能帮忙吗?
问题是:
下面的设计好吗?
如果是,如何改进它以避免在entry类中声明类型参数。
问题
假设我正在处理类来处理请求并获取响应的数据。我有
请求处理程序-调用查询帮助程序来获取数据
查询助手-调用查询生成器来生成查询并用它调用数据库
查询生成器-生成查询。
在我的例子中,每个不同的请求都需要不同的返回类型。查询助手还为不同的请求返回不同的类型。在本文中,我用泛型类和抽象类来设计它。
abstract class RequestHandler<T1, T2> {
QueryHelper<T2> helper;
T1 doGet(Request request) {
...
helper.callDatabase();
return customLogic();
}
abstract T1 customLogic()
}
abstract class QueryHelper<T2> {
QueryBuilder builder;
T2 callDatabase() {
...
client.call(builder.buildQuery());
return customLogic(...);
}
abstract T2 customLogic()
}
abstract class QueryBuilder {
abstract Query buildQuery();
}
通过这种设计,我可以用不同的子类处理不同的请求。e、 对于get product a请求,我有
class ProductAQueryBuilder extends QueryBuilder {
@Override
Query buildQuery() {
...
}
}
class ProductAQueryHelper extends QueryHelper<TypeA> {
QueryBuilder builder;
ProductAQueryHelper(ProductAQueryBuilder builder) {
this.builder = builder;
}
@Override
TypeA customLogic()
}
class ProductARequestHandler extends RequestHandler<TypeB, TypeA> {
QueryHelper<TypeA> helper;
ProductARequestHandler(ProductAQueryHelper helper) {
this.helper = helper;
}
@Override
TypeB customLogic()
}
这看起来不错,因为我简化了问题。实际上,我有不止一个requesthandler和querybuilder的类型参数,这使得我不得不在requesthandler<t1,t2,t3,t4…>处声明许多类型参数。这让我很困扰,因为我必须声明依赖项链上的所有类型参数。有没有办法改进?
谢谢!
暂无答案!
目前还没有任何答案,快来回答吧!