这是有效的工厂模式用法吗?

时间:2012-10-24 05:08:45

标签: factory-pattern

我使用 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();
    }

}

2 个答案:

答案 0 :(得分:1)

只要MysqlPageCalculator和OraclePageCalculator实现相同的接口,或者相同的超类,让我们说PageCalculator,就是正确实现抽象工厂模式。

答案 1 :(得分:1)

正如您已将页面的创建过程提取到独立类而非关键字“new”。所以是的,它是一个简单的工厂模式。