我正在尝试编写一个 Web 应用程序并努力编写干净的代码。我有一个用于处理传入请求的控制器和所有控制器都将借用字段的基本控制器。这是我的基本控制器type Controller struct { Request *http.Request Response http.ResponseWriter // Reqeust language lang string // HTML parts Title string body string head string content string view string errors []string success []string}// And methods followed herefunc (self *Controller) renderHeadView() { .....和我的注册控制器type Controller struct { base.Controller user *account}func (self *Controller) ServeHTTP(rw http.ResponseWriter, r *http.Request) { self.Title = "Sign Up" self.Request = r self.Response = rw self.lang = header.Language(self.Request) self.user = &account{lang: self.lang} switch self.Request.Method { case "GET": self.get() case "POST": if err := self.post(); err != nil { self.get() } else { // If everything was successfully return } } self.RenderResponseView()}和我的激活控制器type Controller struct { base.Controller}func (self *Controller) ServeHTTP(rw http.ResponseWriter, r *http.Request) { self.Title = "Activate account" self.Request = r self.Response = rw self.lang = header.Language(self.Request) self.RenderResponseView()}如您所见,ServeHTTP 方法看起来几乎相同。我正在考虑将 ServeHTTP 移动到基本控制器中,然后提供一种调用特殊工作的方法。为了澄清我的意思,请查看以下代码片段(基本控制器)func (self *Controller) ServeHTTP(rw http.ResponseWriter, r *http.Request) { self.Title = "Activate account" self.Request = r self.Response = rw self.lang = header.Language(self.Request) // here would come function for special work function() self.RenderResponseView()}我不知道如何提供这个实现。如果有人能给我一些建议,我会很高兴。
1 回答
- 1 回答
- 0 关注
- 212 浏览
添加回答
举报
0/150
提交
取消