Monday, December 17, 2012

Spring Tutorial

쉽고 간단한 스프링 튜토리얼. 강추


Friday, December 14, 2012

3장 템플릿 정리

DB에 CRUD과 같은 작업을 수행하기 위해서는 공통적으로 수행해야 하는 작업들이 있다. 시작할 때 커넥션을 열고 종료할 때 닫는 작업, 예외처리 등.

다음 코드는 비즈니스 로직을 둘러싼 이러한 "중복된 기술적 작업"을 보여준다.

이렇게 중복된 기술적 작업을 실제로 관심있는 비즈니스 로직과 분리하기 위한 방법으로 템플릿 메소드 패턴과 전략 패턴을 생각해볼 수 있다.

템플릿 메소드 패턴은 상속을 통해서 변하지 않는 부분을 수퍼클래스에 두고, 변하는 부분은 추상 메소드로 정의해서 서브클래스에서 오버라이드하여 새롭게 정의해 쓰는 것이다.

하지만 기본적으로 상속을 통해 클래스를 만들어야 하는 단점이 있고 확장 구조가 설계 시점에 고정되어 버리는 문제가 있다.

반면 전략 패턴은 확장에 해당하는 부분을 별도의 클래스로 만들어 추상화된 인터페이스를 통해 위임하는 방식이다.


이후 deleteAll() 메소드를 리팩토링해서 컨텍스트와 전략 생성을 분리하면 전략 부분을 DI 받도록 쓸 수 있게 될 것이다.
ff