반응형
1. 전략패턴이란?
전략패턴이란 동적으로 알고리즘을 교체할 수 있는 구조를 말한다. 알고리즘 인터페이스를 정의하고, 각각의 알고리즘 클래스별로 교체 사용 가능하게 한다. (앞선 Connectionmaker 인터페이스구조가 이에 해당)
2. 예시
만약 다음과 같은 delete예제가 있다고 할때 전략 패턴을 적용시켜보자.
다음과 같은 코드에서 변경될 부분은 ps = c.prepareStatement("delete from users"); 부분이다.
나머지 부분은 고정되어 있어야하니 Context에 해당하고 ps 부분이 전략 부분에 해당된다.
Connection c = null;
PreparedStatement ps = null;
try{
c = dataSource.getConnection();
ps = c.prepareStatement("delete from users");
ps.executeUpdate();
} catch (SQLException e) {
throw e;
} finally {
...
}
StatementStrategy인터페이스
public interface StatementStrategy {
PreparedStatement makePreparedStatement(Connection c) throws SQLException
}
DeleteStrategy
public class DeleteStrategy implemetns StatementStrategy {
public PreparedStatement makePreparedStatement(Connection c) thorws SQLException {
preparedStatement ps = c.preparedStatement("delete from users");
return ps;
}
}
수정된 Context 부분
public void Context(StatementStrategy stmt) throws SQLException {
Connection c = null;
PreparedStatement ps = null;
try{
c = dataSource.getConnection();
ps = stmt.makePreparedStatement(c);
ps.executeUpdate();
} catch (SQLException e) {
throw e;
} finally {
...
}
}
Factory부분
public void Factory() throws SQLException {
StatementStrategy st = new DeleteStrategy();
Context(st);
}
3. 정리
앞선 UserDao와 같은 패턴으로 이루어져 있고 IOC와 DI모두 이해할 수 있다.
반응형
'프로그래밍 > 시큐어코딩' 카테고리의 다른 글
[스프링 이해와 원리] AOP란? (0) | 2020.07.09 |
---|---|
[스프링 이해와 원리] 서비스단에서 트랜잭션 추상화하기 (0) | 2020.07.08 |
[스프링 이해와 원리] IOC와 DI 및 패턴 (순서 1) (0) | 2020.07.08 |
[스프링 이해와 원리] #5. 예외 관리 (0) | 2020.07.07 |
[스프링 이해와 원리] #4. 스프링 의존성 주입 (0) | 2020.07.07 |