我目前正在爲學校開展一個小項目。在我的Java應用程序中,我需要一個數據庫,並且我想讓我的應用程序能夠使用不同類型的數據庫。所以我目前實現了一個txt數據庫和一個PostgreSQL。將來,應該可以添加其他數據庫類型。像XML或MySQL,...更靈活的工廠
要創建一個數據庫實例,我設計了一個使用枚舉的工廠。它完美的工作,但它不真正在我的opionio靈活。所以,我做了一些研究,但沒有找到一個很好的例子,這對我來說很清楚。
這是我的枚舉:
public enum DatabaseType {
TXT,
SQL,
XML;
}
這是我廠:
public class DatabaseFactory {
public Database createDatabase(DatabaseType type, String databaseName) throws DatabaseException {
if(type.equals(DatabaseType.TXT)) {
return new FileDatabase(databaseName);
}else if(type.equals(DatabaseType.SQL)) {
return new SQLDatabase(databaseName);
}else if(type.equals(DatabaseType.XML)) {
return new XMLDatabase(databaseName);
}else {
//default
return new FileDatabase(databaseName);
}
}
}
我的目標是隻有編輯在今後的枚舉,而不觸及工廠本身。這應該給我足夠的靈活性,但我不知道我該如何做到這一點。
一種選擇是將其放入枚舉本身。 –
@DaveNewton,我想你仍然需要一個if-else-if或switch-case結構呢? –
例如,請參閱Mattias的答案,或將枚舉映射到簡單的工廠(如果您需要額外的邏輯,則很好)等。您可以*使用if語句。 –