以下の私のファクトリメソッドコード:
public class DBFactory {
protected DBFactory() {}
protected static DataBase createDB() { return null; }
}
public class MySQLFactory extends DBFactory{
private MySQLFactory() {}
public static DataBase createDB() {
return new MySQL();
}
}
public class SQLServerFactory extends DBFactory{
private SQLServerFactory() {}
public static DataBase createDB() {
return new SQLServer();
}
}
public class Test {
public static void main(String[] args) {
DataBase db = SQLServerFactory.createDB();
db.connect();
}
}
そして、私はそれが以下のクライアントコードと違いがないことを発見しました:
package factorymethod;
import db.DataBase;
public class Test {
public static void main(String[] args) {
DataBase db = new MySQL();
db.connect();
}
}
問題は、なぜファクトリメソッドを使用しなければならないのかということです。もっと冗長になると思います...