0

프레젠테이션 레이어를 프레젠테이션 개체와 수신 개체로 분리해야합니까? 또는 양방향으로 데이터를 처리하는 단일 개체를 사용해야합니까?프레젠테이션 레이어 개체

답변

2

프리젠 테이션 레이어는 프리젠 테이션과 수신을 모두 처리하는 인터페이스 뒤에 있어야합니다. 주된 이유는 만약 당신이 두 개의 인터페이스를 가지고 있다면, 하나는 표현하고 다른 하나는 받아들이는 것이 가능하다는 것입니다. 이론 상으로는 두 개의 서로 다른 객체를 할당하여 테스트에 이상을 유발할 수 있습니다.

그러나 인터페이스가 수십 가지 방법으로 발전하는 경우 단계별로 다시 작은 단위로 나누고이를 집계하는 것이 좋습니다. 프레젠테이션 UI의 수신 및 표시가 더 논리적 인 구분에 기반하지는 않습니다.

예를 들어 IPresentationDisplay와 IPresentationControl의 인터페이스 인 두 가지 변수가있는 IPresentationUI를 가질 수 있습니다. 당신이 가지고있는 유일한 등록 루틴은 IPresentationUI 객체를 받아 들일 것입니다. Prenententation 레이어를 구현하는 클래스는 IPresentationUI, IPresentationControl 및 IPresentationDisplay의 세 인터페이스를 구현합니다.

+0

데이터를 표시하는 동일한 개체가 새로운 사용자 입력을 수신 한 다음 개체가 도메인으로 전달됩니까? 도메인은 프레젠테이션 객체에서 무엇을 추출할지 결정합니다. 이것에 보안 위험이 있습니까? – zsharp

+0

일반적인 생각은 인터페이스가 웹 페이지를 나타내는 폼 또는 객체에 의해 구현되고 UI 객체에 이벤트를 전달하고 프레젠테이션을 그리거나 설정하는 방법에 대한 지침을받는 얇은 쉘이라는 것입니다. 그 원시 입력을 취득 해, 도메인을 변경하는 커멘드를 실행하는 UI 오브젝트입니다. 여기에는 필요한 모든 보안 작업이 포함됩니다. 명령이 실행될 때만 도메인을 만집니다. 따라서 보안 검사가 실패하면 명령을 실행하지 마십시오. –

+0

이 접근 방식의 장점은 사용자 상호 작용을 인터페이스 뒤에두면 몇 가지 이점이 있다는 것입니다. 먼저 특정 UI api의 많은 부분을 추상화합니다. 따라서 웹 표준이 변경되고 Form Framework가 변경되지만 새로운 클래스가 인터페이스를 구현하는 한 나머지 소프트웨어는 계속 작동 할 수 있습니다. 모의 객체가 UI 인터페이스를 구현할 수 있기 때문에 두 번째 테스트가 더 쉬워진다. 셋째, 인터페이스를 통해 소프트웨어가 주어진 UI와 정확히 어떻게 상호 작용 하는지를 문서화했습니다. –

관련 문제