我使用 PageFactory 类来分页数据列表,无论使用哪个DBMS。
但我不确定这是有效的工厂模式还是出了点问题。
如果有更好的方法可以告诉我吗?
package com.tource.cms.common.database.paging;
import com.tource.cms.common.environment.EnvironmentVariables;
public class PageFactory {
private static final String DEFAULT_DATABASE_TYPE = getDefaultDatabaseType();
public static Page createPage(int totalRow, int currPage, int blockRow, int blockPage) {
if("mysql".equals(DEFAULT_DATABASE_TYPE))
return new MysqlPageCalculator(totalRow, currPage, blockRow, blockPage).getPage();
else if("oracle".equals(DEFAULT_DATABASE_TYPE))
return new OraclePageCalculator(totalRow, currPage, blockRow, blockPage).getPage();
else {
try {
throw new UnsupportedDatabaseException();
} catch (UnsupportedDatabaseException e) {
e.printStackTrace();
return null;
}
}
}
/** getting DBMS type from cached Memory */
private static String getDefaultDatabaseType() {
return EnvironmentVariables.get("cms.jdbc.databaseType").toLowerCase();
}
}
答案 0 :(得分:1)
只要MysqlPageCalculator和OraclePageCalculator实现相同的接口,或者相同的超类,让我们说PageCalculator,就是正确实现抽象工厂模式。
答案 1 :(得分:1)
正如您已将页面的创建过程提取到独立类而非关键字“new”。所以是的,它是一个简单的工厂模式。