在node.js express中,关于服务示例的最佳策略是什么?

tsm1rwdh  于 2021-09-13  发布在  Java
关注(0)|答案(0)|浏览(180)

关闭。这个问题是基于意见的。它目前不接受答案。
**想改进这个问题吗?**编辑这篇文章,更新这个问题,以便用事实和引文来回答。

五小时前关门了。
改进这个问题
在一个classic node.js express项目中,我有两种不同的“策略”,当我需要一个在另一个中时,将服务和控制器作为一个类使用:
从控制器类中,我可以在模块开始时创建一次服务类的示例,并在每个处理程序中始终使用相同的示例,或者我可以在每个处理程序中创建一个新的服务类示例。我不明白我应该用哪一个,为什么。
例如,假设我在 user.service.js 文件:

class UserService() {
  constructor()  {...}
  getUser() {...}
  ...
}
module.exports = UserService

然后在 user.controller.js ,我有上述两种策略来示例化userservice类:

// Or I use the same instance of the UserService class for all handlers:
const UserService = require("./services/user.service.js")
// One instance of the service for all handler declarations in the controller class
const userService = new UserService()

class UserController {
  constructor() {}
  handler1(req, res, next) {
    const user = await userService.getUser()
    ...
  }
  handler2(req, res, next) {
    const user = await userService.getUser()
    ...
  }
}

或:

// I use a new UserService instance for all handlers:
const UserService = require("./services/user.service.js")

class UserController {
  constructor() {}
  handler1(req, res, next) {
    // new UserService instance specific fot the handler1
    const userService = new UserService()
    const user = await userService.getUser()
    ...
  }
  handler2(req, res, next) {
    // new UserService instance specific fot the handler2
    const userService = new UserService()
    const user = await userService.getUser()
    ...
  }
}

请您解释一下对控制器的所有处理程序使用相同的服务类示例以及让每个处理程序创建自己的userservice示例的含义。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题