5. 3 디자인
단일체 패턴을 설명하기 위한 예제 프로그램에 대해 얘기할게요. 여기에서는 카메라(단일체), 디스플레이 장치, 메모리 장치와 내부 개체(단일체)로 구성하려고 합니다. 카메라 개체를 통해 사진을 찍으면 단일체인 내부 개체를 통해 메모리 장치에 저장할 수 있게 할게요. 카메라는 디스플레이 장치에게 메모리 장치에 대한 정보 보기 모드와 사진 보기 모드를 지원합시다. 내부 개체에서는 찍힌 사진들을 메모리 장치에 보관하고 이들에 대한 정보들을 관리하는 역할을 할 것입니다. 그리고 카메라와 디스플레이 장치들은 내부 장치를 통해 메모리 카드에 사진을 보관하거나 보관된 사진 및 메모리 장치에 대한 정보를 얻어올 수 있습니다.
카메라는 예제 프로그램의 단일체로 정의하고 클래스 이름은 Camera로 할게요. Camera를 단일체로 만들기 위해 단일체를 얻어오는 정적 속성을 Singleton이라 정할께요. 디스플레이 장치는 인터페이스 IView라 정의하고 보기 기능을 제공할 것을 약속을 합시다. 그리고 이를 기반으로 InfoDisplay와 PictureDisplay 클래스를 정의하여 인터페이스에 약속된 보기 기능을 구체적으로 구현합시다. 메모리 장치는 사진을 보관하기 위한 컬렉션으로 MemoryCard 이름으로 클래스를 정의합시다. 사진은 별도의 클래스를 정의하지 않고 string 형식을 사용하겠습니다. 내부 개체에 대한 클래스 이름은 InterObject라고 정하겠습니다. 단일체로 구현할 것이므로 Singoleton 이름의 정적 속성을 제공할게요.