23. 전략 패턴(Strategy Pattern) 구현

23.4 구현 

전략 패턴에 대한 예제 프로그램을 구현하는 순서는 Picture, Viewer 군, PictureCollection과 데모 코드 순으로 하겠습니다.

 

23.4.1 Picture

Picture는 단순히 사진 이름과 색조, 명도, 채도를 멤버로 갖는 클래스로 정의할께요. 전략 패턴을 설명하기 위한 시나리오에 의해 필요한 것이지 직접적으로 전략 패턴과 관련 있는 클래스는 아닙니다.

▶ Picture.cs

 

23.4.2 Viewer 군

Viewer 군은 인터페이스 IView와 자세히 보기를 구현된 VerifyViewer, 간단히 보기를 구현한 SimpleViewer가 있습니다. 이들은 사진 컬렉션 개체에서 다양한 방법으로 사진 정보를 보여주는 부분을 전략 패턴을 적용하여 분리시킨 부분입니다.

IView에서는 공통적으로 제공해야 할 사진 개체의 정보를 보여주는 행위에 대한 약속을 해야 합니다. 그리고, IView를 구현 약속한 각 클래스에서는 구체적으로 사진 개체의 정보를 보여주는 행위를 구현합니다.

▶ Viewer.cs 

▶ VerifyViewer.cs 

▶ SimpleViewer.cs 

23.4.3 PicureCollection과 데모 코드

PictureCollection에서는 멤버 필드로 전략 패턴을 사용한 VerifyViewer 개체와 SimpleViewer 개체를 알고 있습니다. 그리고, 사용자에 의해 보기 모드를 설정할 수 있게 할 것이며 보관된 사진들에 대한 정보 보기를 요청할 수 있게 합시다. 사용자가 사진에 대한 정보 보기를 요청하면 내부에 설정된 모드에 따라 적절한 알고리즘이 구현된 IView 개체를 이용합니다.

 ▶ PictureCollection.cs 

예제 코드에서는 단순히 PictureCollection 개체에 Picture 개체를 보관하여 보기 모드에 따라 적절한 알고리즘을 사용하여 보관한 사진 정보를 보여주는 지를 확인합니다.

 ▶ Program.cs 

 ▶ Program.cs