内容简介:前端控制器模式(Front Controller Pattern)是用来提供一个集中的请求处理机制,所有的请求都将由一个单一的处理程序处理。该处理程序可以做认证/授权/记录日志,或者跟踪请求,然后把请求传给相应的处理程序。以下是这种设计模式的实体。
前端控制器模式(Front Controller Pattern)是用来提供一个集中的请求处理机制,所有的请求都将由一个单一的处理程序处理。该处理程序可以做认证/授权/记录日志,或者跟踪请求,然后把请求传给相应的处理程序。以下是这种 设计模式 的实体。
- 前端控制器(Front Controller) - 处理应用程序所有类型请求的单个处理程序,应用程序可以是基于 web 的应用程序,也可以是基于桌面的应用程序。
- 调度器(Dispatcher) - 前端控制器可能使用一个调度器对象来调度请求到相应的具体处理程序。
- 视图(View) - 视图是为请求而创建的对象。
package main
import "fmt"
type HomeView struct{}
func (h *HomeView) Show() {
fmt.Println("displaying home page")
}
type StudentView struct{}
func (s *StudentView) Show() {
fmt.Println("displaying student page")
}
type Dispatcher struct {
HomeView *HomeView
StudentView *StudentView
}
func NewDispatcher() *Dispatcher {
return &Dispatcher{
HomeView: &HomeView{},
StudentView: &StudentView{},
}
}
func (d *Dispatcher) Dispatch(request string) {
if request == "student" {
d.StudentView.Show()
} else {
d.HomeView.Show()
}
}
type FrontController struct {
Dispatcher *Dispatcher
}
func NewFrontController() *FrontController {
return &FrontController{
Dispatcher: NewDispatcher(),
}
}
func (f *FrontController) isAuthenticUser() bool {
fmt.Println("user is authenticated successfully")
return true
}
func (f *FrontController) trackRequest(request string) {
fmt.Println("Page requested: ", request)
}
func (f *FrontController) DispatherRequest(request string) {
f.trackRequest(request)
if f.isAuthenticUser() {
f.Dispatcher.Dispatch(request)
}
}
func main() {
controller := NewFrontController()
controller.DispatherRequest("home")
controller.DispatherRequest("student")
}
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Erlang趣学指南
邓辉、孙鸣 / 人民邮电出版社 / 2016-9-7 / 79.00元
这是一本讲解Erlang编程语言的入门指南,内容通俗易懂,插图生动幽默,示例短小清晰,结构安排合理。书中从Erlang的基础知识讲起,融汇所有的基本概念和语法。内容涉及模块、函数、类型、递归、错误和异常、常用数据结构、并行编程、多处理、OTP、事件处理,以及所有Erlang的重要特性和强大功能。一起来看看 《Erlang趣学指南》 这本书的介绍吧!