前端控制器模式

基本介绍

1.提供一个集中的请求处理机制,所有的请求都将由一个单一的处理程序处理,该处理程序可以做认证 / 授权 / 记录日志,或者跟踪请求,然后把请求传给相应的处理程序

2.角色

(1)Front Controller:前端控制器,聚合 Dispatcher,处理应用程序所有类型请求的单个处理程序,应用程序是基于 web / 桌面的应用程序

(2)Dispatcher:调度器,Front Controller 可能使用一个 Dispatcher 对象来调度请求到相应的具体处理程序

(3)View:视图,为请求而创建的对象

 

代码示例

public class Client {//客户端

    public static void main(String[] args) {
        FrontController frontController = new FrontController();
        frontController.dispatchRequest("view1");
        frontController.dispatchRequest("view2");
        frontController.dispatchRequest("view3");
    }
}

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);
        }
    }
}

class Dispatcher {//调度器
    private View1 view1;
    private View2 view2;

    public Dispatcher() {
        view1 = new View1();
        view2 = new View2();
    }

    public void dispatch(String request) {
        if (request.equalsIgnoreCase("view1")) {
            view1.show();
        } else if (request.equalsIgnoreCase("view2")) {
            view2.show();
        } else {
            System.out.println("Error:request");
        }
    }
}

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

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

 

posted @   半条咸鱼  阅读(112)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)
点击右上角即可分享
微信分享提示