1

Paging の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();
    }

}
4

2 に答える 2

1

MysqlPageCalculator と OraclePageCalculatorが同じ interface、または同じスーパー クラス、たとえば PageCalculator を実装している限り、Abstract Factory パターンを正しく実装していることになります。

于 2012-10-24T05:54:20.317 に答える
1

ページの作成プロセスを、キーワード「new」ではなくスタンドアロン クラスに抽出したためです。はい、それは単純な工場パターンです。

于 2012-10-24T06:05:07.307 に答える