전면 컨트롤러 모드
Front Controller 패턴은 중앙 집중식 요청 처리 메커니즘을 제공하는 데 사용되며 모든 요청은 단일 처리기에 의해 처리됩니다. 핸들러는 인증/권한 부여/로깅을 수행하거나 요청을 추적한 다음 해당 요청을 적절한 핸들러에 전달할 수 있습니다. 다음은 이 디자인 패턴의 엔터티입니다.
Front Controller - 웹 기반 애플리케이션이든 데스크탑 기반 애플리케이션이든 관계없이 애플리케이션에 대한 모든 유형의 요청을 처리하는 단일 핸들러입니다.
Dispatcher - 프런트 엔드 컨트롤러는 디스패처 개체를 사용하여 해당 특정 핸들러에 요청을 디스패치할 수 있습니다.
View - 뷰는 요청을 위해 생성된 개체입니다.
Implementation
프런트 엔드 컨트롤러와 디스패처로 각각 FrontController 및 Dispatcher를 생성하겠습니다. HomeView 및 StudentView는 전면 컨트롤러에서 받은 요청에 대해 생성된 다양한 뷰를 나타냅니다.
FrontControllerPatternDemo, 데모 클래스에서는 FrontController를 사용하여 전면 컨트롤러 디자인 패턴을 보여줍니다.
1단계
뷰를 만듭니다.
HomeView.java
public class HomeView { public void show(){ System.out.println("Displaying Home Page"); } }
StudentView.java
public class StudentView { public void show(){ System.out.println("Displaying Student Page"); } }
2단계
디스패처 Dispatcher를 생성합니다.
Dispatcher.java
public class Dispatcher { private StudentView studentView; private HomeView homeView; public Dispatcher(){ studentView = new StudentView(); homeView = new HomeView(); } public void dispatch(String request){ if(request.equalsIgnoreCase("STUDENT")){ studentView.show(); }else{ homeView.show(); } } }
3단계
프런트 엔드 컨트롤러 FrontController를 만듭니다.
Context.java
public class FrontController { private Dispatcher dispatcher; public FrontController(){ dispatcher = new Dispatcher(); } private boolean isAuthenticUser(){ System.out.println("User is authenticated successfully."); return true; } private void trackRequest(String request){ System.out.println("Page requested: " + request); } public void dispatchRequest(String request){ //记录每一个请求 trackRequest(request); //对用户进行身份验证 if(isAuthenticUser()){ dispatcher.dispatch(request); } } }
4단계
FrontController를 사용하여 전면 컨트롤러 디자인 패턴을 시연합니다.
FrontControllerPatternDemo.java
public class FrontControllerPatternDemo { public static void main(String[] args) { FrontController frontController = new FrontController(); frontController.dispatchRequest("HOME"); frontController.dispatchRequest("STUDENT"); } }
5단계
출력을 확인합니다.
rreee