码迷,mamicode.com
首页 > 其他好文 > 详细

[Design Pattern] Front Controller Pattern 简单案例

时间:2016-05-22 10:53:15      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:

Front Controller Pattern, 即前端控制器模式,用于集中化用户请求,使得所有请求都经过同一个前端控制器处理,处理内容有身份验证、权限验证、记录和追踪请求等,处理后再交由分发器把请求分发到对于的处理者。

前端控制器模式主要涉及下面三个角色

前端控制器(Front Controller) - 一个处理器用于处理全部的用户请求

分发器(Dispatcher) - 把处理后的请求分发到对于的业务处理程序

视图(View) - 真正处理请求业务程序

 

下面是前端控制器的一个简单案例。

HomeView, StudentView 分别是具体业务处理程序。Dispatcher 用于把请求分发到对于的 View 中。FrontController 是所有用户请求的入口,进行身份验证、权限验证、记录或追踪请求日志。FrontControllerDemo 演示前端控制器模式。

技术分享

 

代码实现

HomeView, StudentView 提供真正的业务处理逻辑

public class HomeView {

    public void show(){
        System.out.println("show Home view ");
    }
}
public class StudentView {

    public void show(){
        System.out.println("show student view ");
    }
}

Dispatcher 分发用户的请求到对应业务处理程序

public class Dispatcher {

    private StudentView studentView;
    private HomeView homeView;
    
    public Dispatcher(){
        homeView = new HomeView();
        studentView = new StudentView();
    }
    
    public void dispatch(String viewName){
        if ("homeView".equals(viewName)){
            homeView.show();
        }
        else {
            studentView.show();
        }
    }    
}

FrontController 用于处理全部用户请求,进行身份验证、权限验证、请求记录或追踪,然后交由 Dispatcher 分发请求

public class FrontController {

    private Dispatcher dispatcher;
    
    public FrontController(){
        dispatcher = new Dispatcher();
    }
    
    public boolean isAuthenticUser(){
        System.out.println("Authenticate user");
        return true;
    }
    
    public void trackRequest(String viewName){
        System.out.println("track request " + viewName);
    }
    
    public void dispatchRequest(String viewName){
        trackRequest(viewName);
        if (isAuthenticUser()){
            dispatcher.dispatch(viewName);
        }
    }
}

演示前端控制器模式。

public class FrontControllerPatternDemo {

    public static void main(){
        
        FrontController frontController = new FrontController();
        
        String viewName = "homeView";
        frontController.dispatchRequest(viewName);
        

        viewName = "studentView";
        frontController.dispatchRequest(viewName);        
    }
}

 

参考资料

Design Pattern - Front Controller Pattern, TutorialsPoint

 

[Design Pattern] Front Controller Pattern 简单案例

标签:

原文地址:http://www.cnblogs.com/TonyYPZhang/p/5516192.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!