난 아직도 헷갈린다;; 같은 개념아닌가 .. ?
상속을 통해 슈퍼클래스의 기능을 확장할 때 사용하는 가장 대표적인 방법이다.
변하지 않는 기능은 슈퍼클래스에 만들어 두고 자주 변경되며 확장할 기능은 추상클래스나 오버라이딩 가능한
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;
}
}
템플릿 메소드와 마찬가지로 상속을 통해 기능을 확장하게 하는 패턴이다.
허나 이 패턴의 주체는 서브클래스로 생각하면 되것다.
서브클래스에서 오브젝트 생성 방법과 클래스를 결정할 수 있도록 미리 정의해둔 메소드를 팩토리 메소드라 하고
이방식을 통해 오브젝트 생성방법을 나머지 로직, 즉 슈퍼클래스의 기본 코드에서 독립시키는 방법을
팩토리 메소드 패턴이라 한다. 이 메소드는 주로 인터페이스 타입으로 오브젝트를 리턴한다.
자바에서 종종 오브젝트를 생성하는 기능을 가진 메소드를 일반적으로 팩토리 메소드라고
부르기도 하는데 이때 말하는 팩토리 메소드와는 다르다고 한다.
출처 http://kimddochi.tistory.com/55
템플릿 메소드 패턴
'Web > 스프링' 카테고리의 다른 글
[Spring] sitemesh 설정하기 (0) | 2017.03.15 |
---|---|
윈도우 스프링개발환경 STS 설치 (0) | 2017.03.09 |
VO, DTO의 차이 (0) | 2017.02.03 |
String, StringBuffer, StringBuilder 차이점과 장단점 (0) | 2016.11.15 |
[ibatis] parameterMap, resultMap 지원되는 jdbcType, javaType 정리 (0) | 2016.04.11 |
댓글