5. 단일체 패턴(Singleton Pattern) 구현

5. 4 구현

이제 단일체 패턴에 대한 예제 프로그램을 작성해 봅시다. 구현 순서는 메모리 카드, 내부 개체, 디스플레이 장치, 카메라 순으로 하겠습니다.

 

5.4.1 메모리 카드

메모리 카드에는 사진을 보관하는 메서드가 필요할 것입니다. 그리고 전체 사진의 개수를 확인하기 위한 속성과 특정 번호에 해당하는 사진을 얻어오는 인덱서를 제공하려고 합니다. 

▶MemoryCard.cs


5.4.2
내부 개체 

내부 개체는 단일체로 정의하였습니다. 단일체이므로 여러 개의 개체를 생성할 수 없게 생성자를 private으로 접근 지정할게요. 그리고 정적 생성자를 통해 단일체를 생성하게 하고 단일체를 얻어오기 위한 정적 멤버 속성을 제공합시다.

 

디자인 패턴을 구현하는 방법은 여러 가지가 있습니다. 여기에서 보여주는 방법은 여러 가지 방법의 하나일 뿐입니다.

이 외에도 내부 개체에는 카메라에 장착한 메모리 카드를 설정하는 메서드, 카메라로 찍은 사진을 메모리 카드에 보관하는 메서드, 메모리 카드에 보관된 전체 사진의 개수 및 현재 보고 있는 사진의 번호 등을 확인하기 위한 메서드와 속성들을 제공할 것입니다.

▶InnerObject.cs


5.4.3 디스플레이 장치

디스플레이 장치는 사진 정보를 보여주는 기능을 약속하는 인터페이스 IView와 이를 기반으로 정의하는 InfoDisplay, PictureDisplay 클래스를 구현합시다.

▶IView.cs

 InfoDisplay와 PictureDisplay는 인터페이스에 약속한 View 메서드를 구현해야 합니다.  

▶InfoDisplay.cs

▶PictureDisplay.cs


5.4.4
카메라

카메라도 단일체로 정의를 하기로 하였습니다. 여러 개의 개체를 생성할 수 없게 생성자를 private으로 접근 지정하겠습니다. 그리고 단일체를 얻어오기 위한 정적 속성을 제공하고 정적 생성자에서 단일체 개체를 생성할게요.

 

그리고 카메라에는 메모리 카드를 장착하는 메서드와 사진을 찍는 메서드, 보기 모드를 전환하는 메서드 등을 제공합시다.

▶Camera.cs

다음의 코드는 확인하기 위해서 작성된 코드입니다. 

▶Program.cs

▶실행 결과