더북(TheBook)

가령 다양한 마이너스 통장(overdraft) 정책을 지원해야 하는 뱅킹 애플리케이션을 구축한다고 합시다. 계좌 잔고 한도 및 초과 인출된 계좌에 부과되는 수수료는 은행 정책마다 다릅니다. 이 문제는 디자인 패턴 교과서에 나오는 전략 패턴(Strategy pattern)으로 해결할 수 있습니다. 전략 패턴에 따르면 이 문제의 솔루션은 다음 세 가지로 구성됩니다.

초과 인출 알고리즘을 캡슐화한 전략 인터페이스 Overdraft

하나 이상의 전략 구상 클래스(concrete class)(각각 특정 맥락(context)을 표현함)

알고리즘을 사용하는 Account 클래스

 

전략 패턴은 객체 지향 디자인 패턴이므로 솔루션의 엘리먼트는 클래스입니다. 여러 서비스가 협동하는 고수준의 디자인 패턴은 이 절 뒷부분에서 다룹니다.

패턴은 자신이 적용되는 맥락을 반드시 기술해야 한다는 점에서 가치가 큽니다. 패턴이 제시한 솔루션이 어떤 맥락에서는 통하지만 또 다른 어떤 맥락에서는 전혀 통하지 않을 수도 있다는 생각 덕분에 더 나은 방법으로 기술을 논할 수 있게 되었습니다. 예를 들어 넷플릭스 정도 규모의 대기업에서 사용했던 솔루션이 소수의 사용자만 쓰는 애플리케이션에서도 잘 통하리란 보장은 없죠.

물론 패턴은 맥락을 고려하게 만드는 것 외에도, 매우 중요하지만 자주 간과되는 솔루션의 측면도 함께 기술하도록 강제한다는 점에서 효용성이 큽니다. 상용 패턴의 구조는 대략 다음 세 부분으로 구성됩니다.

강제 조항(forces)

결과 맥락(resulting context)

연관 패턴(related patterns)

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.