팩토리 메소드 패턴은 슈퍼클래스 코드에서 서브클래스에서 구현할 메소드를 호출해서 필요한 타입의 오브젝트를 가져와 사용한다. 이 메소드는 주로 인터페이스 타입으로 오브젝트를 리턴하므로 서브클래스에서 정확히 어떤 클래스의 오브젝트를 만들어 리턴할지는 슈퍼클래스에서 알지 못한다.
abstract class UserDao {
public void add(User user) {
Connection c = getConnection();
}
public User get(String id) {
Connection c = getConnection();
}
public abstract Connection getConnection();
}
class MysqlUserDao extends UserDao {
@Override
public Connection getConnection() {
// Mysql 연결 로직
}
}
class OracleUserDao extends UserDao {
@Override
public Connection getConnection() {
//Oracle 연결 로직
}
}