2012-10-24 47 views
1

我製作了PageFactory class用於分頁數據列表,無論使用哪個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(); 
    } 

} 

回答

1

只要MysqlPageCalculator和OraclePageCalculator實施相同的接口,或同一超類,比方說PageCalculator,要實現抽象工廠模式正確。

1

由於您已將頁面的創建過程提取爲獨立類,而不是關鍵字'new'。所以是的,這是一個簡單的工廠模式。