Programming/Design Pattern

[펌] The Front Controller Pattern

영웅기삼 2006. 1. 21. 04:48
3.     The Front Controller Pattern

“Front Controller”패턴은 공통으로 발생하는 요청 처리를Controller에 맡기고,다음View에 위임한다.요청 처리를 집중시키면 이 로직이 뷰와 섞이지 않고,여러 뷰들의 공통역할을 하게 된다.그러므로 이 로직을 유지보수하고 확장하는 것이 좀더 수월해진다.

“Front Controller”패턴에서 컨트롤러는Servlet이나JSP로 구현된다.하지만 주로Servlet으로 구현되는게 일반적이다.

ServletJSP Controller의 차이점

 

JSP :일반적으로 요청 처리보다는 출력 형식에 더 가깝다. JSP로 컨트롤러를 만들면 여러가지가 복잡하게 된다.

Servlet :요청 처리 코드와HTML이 분리되기 때문에 유지보수하기가 쉬워진다.

 

구조



Front Controller pattern class diagram

 



Front Controller sequence diagram

일반적으로ControllerHelper사이에Command패턴을 사용한다. Controller의 권한 위임을Command객체가 받음으로써 위임 프로세스들 간의 결합력을 약하게 한다.

 

 

역할

n         Controller:

요청를 처리하고,다음View에 위임하는 시작점

 

n         Dispatcher:

View관리와 내비게이션을 담당

 

n         View:

클라이언트에게 필요한 정보를 보여준다.

 

n         Helper:

Viewcontroller가 작업을 제대로 수행하도록 도와준다.

 

의도

입력되는 클라이언트의 요청을 처리하는 객체를 단일화하여 그것에게 웹 애플리케이션의View관리를 집중화 시킨다.

 

결론

n         쉽고 이해와 구성이 쉬운 내비게이션 가능:내비게이션의 구조를 이해할 때Controller만 살펴보면되고,내비게이션을 수정할 때Controller만 수정하면 된다.

n         View의 쉬운 변경과 재사용: View는 오직Controller와 통신하기 때문에View들 간에는 어떠한 의존 관계도 없다.

n         Front Controller의 복잡성 이동:애플리케이션이 거대해질수록 컨트롤러를 유지보수하기 어려워진다.

 

예제소스

Intercepting Filter Pattern의 예제 소스는ControllerServlet으로 사용한Font Controller Pattern과 통일 하므로 여기서 예제 소스는 제시하지 않습니다.