2009-06-05 6 views
0

View에 제출할 모델 속성을 필터링 할 때 Interface 대신 Presentation 클래스를 사용해야하는 이유는 무엇입니까?프리젠 테이션 클래스와 뷰 필터링 인터페이스

+0

이 질문은 작은 척도입니다. 어떤 플랫폼을 사용하고 있습니까? 울타리? ASP.NET MVC? MVP 구현? 다른 것? – jrista

+0

asp.net mvc .... – zsharp

+0

질문을 확대하고 예제를 제공해야한다고 생각합니다 ... 귀하의 요구 사항을 실제로 파악할 수 없습니다. ASP.NET MVC에는 모델 데이터와 함께 작동하고 렌더링되는 컨트롤러 및 뷰가 있지만 .... 모든 프레젠테이션 클래스를 알지 못합니다. MVP에서 일반적으로 인터페이스가있는보기가 있습니다.이 인터페이스에는 발표자에 대한 참조가 있으며보기의 인터페이스에 대한 참조가 있습니다. – jrista

답변

2

link text 당신이 다음과 같은 요구하는 생각 : 다수의 하위 설정 범위-의 지식을 제한하기 위해, 뷰에 속성 의

통과가되어

옵션. 그 중 하나가 포함 중간 객체 ( "프레젠테이션 클래스"또는 "데이터 전송 객체")의 모델과 다른 에서 원하는 특성을 복사하는 것은 모델은 인터페이스를 구현 가지며 그 통과 포함 보기에 대한 인터페이스.

왜 후자와 반대되는 으로 전자를 사용 하시겠습니까?

내 대답은 모델을 인터페이스로 구현할 수없는 경우가 종종 있습니다. 다른 때에는 불필요한 인터페이스로 모델을 오염시키지 않으려는 경우도 있습니다. 예를 들어, 이론적으로 모든보기에 대해 다른 인터페이스를 사용할 수 있으며 합산되기 시작할 수 있습니다.

대체 모델은 어댑터 패턴을 사용하여 모델을 랩핑하고 인터페이스를 구현하며 인터페이스 호출을 모델에 위임하는 클래스를 만드는 것입니다.

정말 나머지 옵션보다 더 좋은 옵션은 없으며 모두 상황과 스타일에 따라 다릅니다.

+0

마지막 part'adapter 패턴을 이해하지 못합니다. – zsharp

+0

http://www.c2.com/cgi/wiki?AdapterPattern 어댑터 패턴을 사용하면 인터페이스를 지원하지 않는 클래스를 " 일반적으로 인터페이스를 구현하는 래퍼 (wrapper)에 숨김으로써이를 "적응"합니다. – Talljoe

관련 문제