카테고리 없음
템플릿 메소드 패턴 과 팩토리 메소드 패턴
iamreo
2013. 7. 25. 17:45
반응형
템플릿 메소드 패턴
상속을 통해 슈퍼클래스의 기능을 확장할 때 사용하는 가장 대표적인 방법이다.
변하지 않는 기능은 슈퍼클래스에 만들어 두고 자주 변경되며 확장할 기능은 추상클래스나 오버라이딩 가능한
protected메소드(=추상메소드) 등으로 만든 뒤 서브클래스에서 만들도록 한다.
-단점 : 상속을 통하여 구현이 되므로 해당 추상 메소드가 필요한 클래스마다 상속을 받아야 한다.

=============== 예제 ================
/* UserDao.java */
상속을 통해 슈퍼클래스의 기능을 확장할 때 사용하는 가장 대표적인 방법이다.
변하지 않는 기능은 슈퍼클래스에 만들어 두고 자주 변경되며 확장할 기능은 추상클래스나 오버라이딩 가능한
protected메소드(=추상메소드) 등으로 만든 뒤 서브클래스에서 만들도록 한다.
-단점 : 상속을 통하여 구현이 되므로 해당 추상 메소드가 필요한 클래스마다 상속을 받아야 한다.
=============== 예제 ================
/* UserDao.java */
public abstract class UserDao {
public void deleteAll() throws SQLException {
Connection c = null;
PreparedStatement ps = null;
try {
c = dataSource.getConnection();
ps = makeStatement(c);
ps.executeUpdate();
} catch (SQLException e) {
throw e;
} finally{
if(ps!=null) try{ps.close();}catch(SQLException e){}
if(c!=null) try{c.close();}catch(SQLException e){}
}
}
abstract protected PreparedStatement makeStatement(Connection c) throws SQLException;
}
/* UserDaoDeleteAll.java */
public class UserDaoDeleteAll extends UserDao {
@Override
protected PreparedStatement makeStatement(Connection c) throws SQLException {
// TODO Auto-generated method stub
PreparedStatement ps = c.prepareStatement("delete from users");
return ps;
}
}
팩토리 메소드 패턴
템플릿 메소드와 마찬가지로 상속을 통해 기능을 확장하게 하는 패턴이다.
허나 이 패턴의 주체는 서브클래스로 생각하면 되것다.
서브클래스에서 오브젝트 생성 방법과 클래스를 결정할 수 있도록 미리 정의해둔 메소드를 팩토리 메소드라 하고
이방식을 통해 오브젝트 생성방법을 나머지 로직, 즉 슈퍼클래스의 기본 코드에서 독립시키는 방법을
팩토리 메소드 패턴이라 한다. 이 메소드는 주로 인터페이스 타입으로 오브젝트를 리턴한다.
자바에서 종종 오브젝트를 생성하는 기능을 가진 메소드를 일반적으로 팩토리 메소드라고
부르기도 하는데 이때 말하는 팩토리 메소드와는 다르다고 한다.
템플릿 메소드와 마찬가지로 상속을 통해 기능을 확장하게 하는 패턴이다.
허나 이 패턴의 주체는 서브클래스로 생각하면 되것다.
서브클래스에서 오브젝트 생성 방법과 클래스를 결정할 수 있도록 미리 정의해둔 메소드를 팩토리 메소드라 하고
이방식을 통해 오브젝트 생성방법을 나머지 로직, 즉 슈퍼클래스의 기본 코드에서 독립시키는 방법을
팩토리 메소드 패턴이라 한다. 이 메소드는 주로 인터페이스 타입으로 오브젝트를 리턴한다.
자바에서 종종 오브젝트를 생성하는 기능을 가진 메소드를 일반적으로 팩토리 메소드라고
부르기도 하는데 이때 말하는 팩토리 메소드와는 다르다고 한다.
반응형