프리젠테이션(Presentation) 티어 패턴 - Composite View
2007/05/26 22:59
1. 고려해야 할 사항
2. 해결방안
3. 해결방안 - 구조

4. 해결방안 - 시퀀스

5. 구현전략
6. 예제 및 코드

7. 결과
8, 관련패턴
- 뷰는 사용자와 수행될 기능에 따라 다이나믹하게 구성될 수 있어야 함.
- 템플릿을 구성하고 있는 일부분의 변경이 자주 발생. 그러나, 전체 템플릿의 구조는 고정된 구조를 가지고 있음. 예를 들어, 헤더는 항상 화면 위에 위치하면서 광고를 보여주는 경우가 많음.
- 레이아웃이 변경될 경우 이것을 관리하는 것은 더 어렵고, 서브 뷰가 직접 전체 화면에 포함되어 하드코딩되어 있고, 여러 뷰에서 중복되어 사용되고 있을 경우, 서브 뷰 변경시 이 코드를 관리하는 것은 더 어려움.
- 컨텐츠 변경시 페이지가 캐싱되어 있기 때문에 변경된 새로운 페이지가 서비스되도록 하기 위해서는 서버를 재시작 하거나, 아니면 변경된 페이지가 디시 로딩되도록 해야 함.
2. 해결방안
- Composite View 페이지는 ViewFragment 페이지와 다른 Composite View 페이지를 포함하고 있음.
- CompositeView 페이지는 페이지의 레이아웃을 정의.
3. 해결방안 - 구조

4. 해결방안 - 시퀀스

5. 구현전략
- Early-Binding Resource
<%@include %> 다이렉티브는 JSP가 서블릿으로 변환되는 시점에 서브뷰가 포함됨. 이 전략은 보통 퍼포먼스가 좋고 포함되는 페이지가 자주 변경되지 않는 경우에 효율적. 예를 들어, 한 달에 한번 변경되는 머리글과 바닫글을 가지고 있을 경우, 이 전략을 사용하면 좋음. - Late-Binding Resource
<jsp:include> 액션 태그를 사용해 구현 할 수 있음. 이 액션 태그는 런타임 서브 뷰를 포함시킴. 이 전략은 수행 속도 측면에서 "Early-Binding Resource"보다 늦지만, 서브 뷰가 자주 업데이트 될 경우 유용한 전략. 또한, 사용자 요청을 기반으로 서브 뷰들이 포함되어야 하는 경우, 이 전략이 "Early-Binding Resource" 보다 훨씬 더 유용함. - Custom Tag View Management
뷰는 자바빈즈 콤포넌트를 이용해 포함되게 됨. - Transformer View Management
뷰는 XSL Transformer를 이용해 관리됨.
6. 예제 및 코드

7. 결과
- 장점
템플릿을 한 장소에서 변경시킬 수 잇기 때문에 유지보수가 쉬워짐.
템플릿은 사용자 요청을 기반으로 서브 뷰들을 다이나믹하게 포함할 수 있음. - 단점
템플릿이 적절하게 구성되지 않을 경우 잘못된 컨텐츠가 생성될 수 있음.
런타임에 서브 뷰를 포함할 경우 퍼포먼스가 늦어질 수 있음.
8, 관련패턴
- Composite
- View Helper
