前端控制器模式
基本介绍
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");
}
}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)