20190125——还怕人看清 Java前端控制器模式

前端控制器设计模式用于提供集中式请求处理机制,以便所有请求将由单个处理程序处理,此处理程序可以执行请求的身份/授权/记录或跟踪,然后将请求传递到相应的处理程序。以下是这种类型的设计模式的实体。

前端控制器:用于处理应用程序(基于Web或基于桌面)的各种请求的单个处理程序。
分发器:前端控制器可以使用可以将请求分派到相应的特点处理器的分派器对象
视图:视图是进行请求的对象

实现实例
在这个实例中,将创建一个FrontController和Dispatcher作为前台控制器和相应的调度程序。HomeView和StudentView代表各种视图,请求可以到前端的控制器中。

FrontControllerPatternDemo这是一个演示类,将使用FrontController来演示前控制器设计模式。
20190125——还怕人看清 Java前端控制器模式

20190125——还怕人看清 Java前端控制器模式

第一步

package 前端控制器模式;

public class HomeView {
    public void show(){
        System.out.println("Displaying Home Page");
    }
}

package 前端控制器模式;

public class StudentView {
    public void show(){
        System.out.println("Displaying Student Page");
    }
}

第二步

package 前端控制器模式;

public class Dispathcer {
    private StudentView studentView;
    private  HomeView homeView;

    public Dispathcer(){
        studentView =new StudentView();
        homeView =new HomeView();
    }

    public void dispatch(String request){
        if(request.equalsIgnoreCase("STUDENT")){
            studentView.show();
        }
        else {
            homeView.show();
        }
    }
}

第三步

package 前端控制器模式;

public class FrontController {
    private Dispathcer dispathcer;

    public FrontController(){
        dispathcer=new Dispathcer();
    }

    private boolean isAuthenticUser(){
        System.out.println("User is authenticated Successfully");
        return  true;
    }
    private void trackRequest(String requset){
        System.out.println("Page requseted"+requset);
    }

    public void dispatchRequest(String requset){
        trackRequest(requset);

        if(isAuthenticUser()){
            dispathcer.dispatch(requset);
        }
    }
}

第四步

package 前端控制器模式;

public class FrontControllerPatternDemo {
    public static void main(String[] args) {
        FrontController frontController =new FrontController();
        frontController.dispatchRequest("HOME");
        frontController.dispatchRequest("STUDENT");
    }
}