14. 보호용 프락시 구현

14. 4 구현 

프락시 패턴 중에 보호용 프락시에 대한 예제 프로그램을 구현하는 순서는 IView와 Picture, 보호용 프락시인 ProctectionPicture, PictureManager와 데모 코드 순으로 하겠습니다.

 

14.4.1 IView와Picture

IView에서는 정보를 보여주는 메서드와 소유자를 얻어오는 속성에 대한 약속할게요. 이를 구현 약속하는Picture와 ProtectionPicture에서는 약속한 기능을 구현해야 하겠죠.

Picture의 생성자 메서드에서는 사진 이름과 소유자 정보를 입력 인자로 받도록 할게요. 그리고, View 메서드에서는 이들 정보를 보여주게 하고 소유자 정보를 얻어오는 속성을 제공해야 합니다.

 ▶ IView.cs

 ▶ Picture.cs

 

14.4.2 ProtectionPicture

보호용 프락시인 ProtectionPicture도 실제 개체인 사진과 일관적으로 사용할 수 있게 IView 인터페이스를 구현 약속하기로 하였습니다.

보호용 프락시의 생성자 메서드에서는 입력 인자로 전달받은 사진 이름과 소유자 정보를 기반으로 사진 개체를 생성합니다. 이와 같이 설정을 함으로써 사진의 정보를 보여주는 메서드나 소유자 정보를 얻어오는 속성을 구현함에 있어 내부에 있는 실제 개체를 이용할 수 있습니다.

보호용 프락시의 경우 권한에 따라 실제 개체의 특정 행위를 사용하는 것을 막을 수 있어야 하기 때문에 여기에서는 사용자를 설정하는 메서드와 사진을 사용할 수 있는 사용자를 추가할 수 있는 기능을 추가로 제공할게요.

이와 같은 설정은 사진 정보를 보여주는 메서드에서 사용 권한이 부여된 사용자가 아닌 경우에는 실제 개체의 정보를 보여주는 것을 막을 수 있게 해 줍니다.

 ▶ ProctectionPicture.cs 

14.4.3 PictureManager와 데모 코드 

사진 관리자에서는 IView 인터페이스 형식 개체를 보관할 수 있는 컬렉션을 멤버 필드로 갖고 있습니다. 사용자는 로그 인을 수행한 후에 사진을 추가하거나 전체 사진 목록을 볼 수 있게 할 것입니다. 그리고, 사용이 끝나면 로그 아웃을 수행할 수 있습니다. 사용자는 두 가지 방법으로 사진을 추가할 수 있는데 첫 번째 방법은 일반 사진을 추가하는 것이고 두 번째 방법은 보호용 사진을 추가하는 것입니다. 보호용 사진을 추가할 때에는 사진을 볼 수 있는 사용자 리스트를 입력 인자로 전달하게 할 것입니다.

  ▶ PictureManager.cs 

데모 코드에서는 한 명의 사용자가 로그 인을 하여 일반 사진과 보호용 사진을 추가를 한 후에 다른 사용자가 로그 인을 하여 사진을 보려고 하면 일반 사진과 권한이 있는 보호용 사진만 볼 수 있다는 것을 보여주는 코드를 작성하려고 합니다. 

  ▶ Program.cs 

 다음은 보호용 프락시에 대한 예제 프로그램을 실행하였을 때의 화면입니다. 

보호용 프록시 실행 화면
[그림] 보호용 프록시 실행 화면