前端控制器模式(Front Controller Pattern)

即为所有的请求提供一个统一处理的方法,像现在网关层就是一个前端控制器模式组件实例,但今天主要讲代码实例。

前端控制器模式的实例

定义两个需要展示的页面

  1. class HomeView {
  2. show(){
  3. console.log("Displaying Home Page");
  4. }
  5. }
  6. class StudentView {
  7. show(){
  8. console.log("Displaying Student Page");
  9. }
  10. }

定义展示器

  1. class Dispatcher {
  2. constructor() {
  3. this.studentView = new StudentView();
  4. this.homeView = new HomeView();
  5. }
  6. dispatch(request) {
  7. if(request.toUpperCase()=="STUDENT"){
  8. this.studentView.show();
  9. }else{
  10. this.homeView.show();
  11. }
  12. }
  13. }

定义前端控制器

  1. class FrontController {
  2. constructor(){
  3. this.dispatcher = new Dispatcher();
  4. }
  5. isAuthenticUser(){
  6. console.log("User is authenticated successfully.");
  7. return true;
  8. }
  9. trackRequest(request){
  10. console.log("Page requested: " + request);
  11. }
  12. dispatchRequest(request){
  13. //记录每一个请求
  14. this.trackRequest(request);
  15. //对用户进行身份验证
  16. if(this.isAuthenticUser()){
  17. this.dispatcher.dispatch(request);
  18. }
  19. }
  20. }

通过前端请求,就能对所有访问的接口,进行记录和鉴权。

  1. const frontController = new FrontController();
  2. frontController.dispatchRequest("HOME");
  3. frontController.dispatchRequest("STUDENT");

前端控制器模式

能够提供统一处理接口请求的常用的方案。