[각 패턴의 특징]
- 프레젠테이션 티어(상단)
- Intercepting Filter 패턴
request를 직접 처리 하기 전에 가로채서, 선언적 방식으로 중복되는 전후처리를 한다. - Front Controller 패턴
모든 request를 한 곳으로 보낸다. - Context Object 패턴
특정 프로토콜에 한정되는 내용이나 불필요한 데이터를 포함하는 원래 객체 대신, 필요한 데이터만 Context Object로 만들어서 넘김 - Application Controller 패턴
request를 처리하는 액션 관리와 뷰 관리 컴포넌트를 중앙 집중화 한다. - View Helper 패턴
View를 만드는 과정에서 제어 로직, 데이터 접근 로직, 포맷 로직을 분리한다. (예를들면 JSP 에서 스크립틀릿 대신 JSTL, Custom Tag 등을 헬퍼로 사용) - Composite View 패턴
View를 만들 때 레이아웃을 조합한다. (예를들면 Header/Footer를 일관적으로 붙이는 것) - Service to Worker 패턴
제어권이 뷰로 넘어가기 전에 프레젠테이션 모델을 가져오도록 제어 로직과 요청 핸들링을 중앙 집중화한다. 뷰는 프레젠테이션 모델에 근거해서 동적 응답을 생성한다. (비즈니스 로직 결과에 따라 View가 선택됨) - Dispatcher View 패턴
정적 뷰이거나 동적 내용이 거의 없는 뷰, 간단한 애플리케이션을 만들 때만 제한적인 용도로 사용. (정적인 Business Helper 이용) - 비즈니스 티어(중간)
- Business Delegate 패턴
비즈니스 서비스 접근을 캡슐화하는 패턴 - Service Locator 패턴
서비스와 컴포넌트 검색을 쉽게 하는 패턴 - Session Facade 패턴
비즈니스 티어 컴포넌트를 캡슐화하고, 원격 클라이언트에서 접근할 수 있는 서비스를 제공하는 패턴 - Application Service 패턴
여러 컴포넌트에 분산되어 있는 관련된 비즈니스 로직 오퍼레이션을 조합하여 하나의 인터페이스로 서비스 - Business Object 패턴
객체 모델을 사용하여 비즈니스 데이터, 비즈니스 로직, 퍼시스턴스 로직을 분리 - Composite Entity 패턴
로컬 엔티티 빈과 POJO 패턴이라고 알려져있음. 데이터를 전송하기위한 객체에 대한 패턴 - Transfer Object 패턴
일명 Value Object(VO, TO) 패턴이라 알려져 있음. 데이터를 전송하기 위한 객체에 대한 패턴 - Transfer Object Assembler 패턴
하나의 Transfer Object로 모든 데이터를 처리할 수 없으므로, 여러 Transfer Object를 조합하거나 변형한 객체를 생성하여 사용하는 패턴 - Value List Handler 패턴
데이터 조회를 처리하고, 결과를 임시 저장하며, 결과 집합을 검색하여 필요한 항목을 선택하는 역할을 수행 - 인테그레이션 티어(하단)
- Data Access Object 패턴
일명 DAO라고 알려져있음. DB 접근을 전담하는 클래스를 추상화하고 캡슐화함 - Service Activator 패턴
비동기적 호출을 처리하기 위한 패턴 - Domain Store 패턴
Business Object Model 에서 영속성을 분리하고자 할 때. - Web Service Broker 패턴
하나 이상의 서비스를 XML 및 웹 프로토콜로 노출함. RPC방식이나 메시징 인터페이스
위쪽은 화면에 가깝고 아래쪽은 DB에 가깝다
[J2EE 리펙토링]
- 프레젠테이션 티어 리팩토링
- 컨트롤러 도입
- 동기화 토큰 도입
- 각기 다른 로직을 지역화 하기 (응집도와 결합도)
- 프레젠테이션 티어에 한정된 세부 구현을 비즈니스 티어로부터 숨기기
- 뷰 안에 있는 포맷 변환 코드 제거하기
- 클라이언트로부터 리소스 숨기기
- 비즈니스 티어와 통합 티어 리팩토링
- 세션 빈으로 엔티티 빈 감싸기
- Business Delegate 도입
- 세션 빈 병합하기
- 엔티티 빈 상호 통신 줄이기
- 비즈니스 로직을 세션 빈으로 옮기기
- 일반 리팩토링
- 데이터 접근 코드 분리(dao)
- 티어에 따른 아키텍처 리팩토링
- 커넥션 풀 이용하기
참고
출처 - http://kaylis.tistory.com/61
'Design Pattern > Common' 카테고리의 다른 글
디자인 패턴(책) (0) | 2013.04.16 |
---|---|
Programming paradigms (0) | 2013.01.01 |
DSL(domain-specific language) (0) | 2013.01.01 |
Rich Domain Model (0) | 2012.11.05 |
java - 디자인 패턴 - 팩토리 패턴 (0) | 2012.08.02 |