개방 폐쇄 원칙(OCP)을 잘 지키는 구조이면서 템플릿 메소드 패턴보다 유연하고 확장성이 뛰어남

오브젝트를 아예 둘로 분리하고 클래스 레벨에서는 인터페이스를 통해서만 의존하도록 만드는 전략 패턴

전략패턴 그림

전략 패턴은 OCP 관전에 보면 확장에 해당하는 변하는 부분을 별도의 클래스로 만들어 추상화된 인터페이스를 통해 위임하는 방식이다. 좌측의 Context의 contextMethod()에서 일정한 구조를 가지고 동작하다가 특정 확장 기능은 Strategy인터페이스를 통해 외부의 독립된 전략 클래스에 위임하는 것이다.

  • deleteAll()메소드의 변하지 않는 부분 = contextMethod()가 된다.
  • JDBC를 이용해 DB를 업데이트하는 작업이라는 변하지 않는 맥락(context)을 갖는다.
  • PreparedStatement를 만들어주 외부기능이 전략에 해당된다.

UserDao는 전략 패턴의 컨텍스트에 해당된다. 컨텍스트는 자신의 기능을 수행하는데 필요한 기능 중에서 변경 가능한, DB 연결 방식이라는 알고리즘을 인터페이스로 정의하고, 이를 구현한 클래스, 즉 전략을 바꿔가며 사용할 수 있게 분리했다.

출처

토비의 스프링(책)

댓글남기기