23. 전략 패턴(Strategy Pattern) 설계

23. 3 디자인

전략 패턴에 대한 설명을 위한 예제로 사용할 프로그램은 사진 파일을 관리하는 컬렉션에서 다양한 형태로 사진 개체의 정보를 보여주는 프로그램으로 하겠습니다.

사진의 정보를 보여주는 방법에는 자세히 보기와 간략 보기를 제공할 것입니다. 사용자는 사진을 보관하는 컬렉션의 보기 모드를 설정을 할 수 있고 이에 따라 사진의 정보를 자세하게 보여주거나 간단히 보여줄 수 있어야 합니다. 그리고 다른 형태로 사진의 정보를 보여주는 알고리즘을 추가 및 변경이 쉬워야 합니다.

이를 위해 사진 컬렉션에서 사진의 정보를 보여주는 부분을 별도의 형식으로 정의할 것입니다. 사진의 정보를 보여주는 알고리즘을 인터페이스 IView로 정의하고 사진 개체의 정보를 보여주는 메서드에 대한 약속을 할께요. 그리고, 이를 구현 약속하는 클래스로 자세하게 사진을 보여주는 형식과 간단히 사진을 보여주는 형식을 정의하여 각 목적에 맞게 사진 개체의 정보를 보여주는 메서드를 구현할 것입니다.

사진을 보관하는 컬렉션 형식에서는 사진을 보여주는 다양한 알고리즘 개체를 멤버로 갖고 있게 하여 사용자의 다양한 요청에 맞게 적절한 알고리즘이 구현된 개체를 사용할 수 있습니다.

이와 같이 전략 패턴은 특정 부분에 적용할 알고리즘을 다양하게 적용하고자 할 때 해당 부분을 별도의 형식으로 정의하여 사용할 수 있습니다. 이를 통해 사용하는 알고리즘을 쉽게 확장 및 변경이 용이하게 되며 개발에 있어서 필요한 요구 기술에 맞게 작업을 분리할 수도 있습니다.

[그림] 전략 패턴 클래스 다이어그램
[그림] 전략 패턴 클래스 다이어그램