当前位置: 首页 > 知识库问答 >
问题:

“getInstance()”方法的目的是什么?

龚志文
2023-03-14

我正在研究用户服务,我的理解是它类似于Nest中的用户服务,但不是真的。

在其中,我看到了以下内容:

export class UsersService {
  private usersDao: UsersDao

  constructor() {
     this.usersDao = UsersDao.getInstance();
  }
}

static getInstance(): UsersService {
  if (!UsersService.instance) {
    UsersService.instance = new UsersService();
  }
  return UsersService.instance;
}

getInstance()到底在做什么?为什么不只是:

export class UsersService {

  constructor(private usersDao: UsersDao) {}
}

getInstance()的目标是什么?

共有1个答案

楚浩然
2023-03-14

通常,这是单例模式的一部分。基本上是一个类,一旦实例化,任何后续类都将引用该实例,而不是每次都创建一个新实例。

https://en.wikipedia.org/wiki/Singleton_pattern

它对于第一次构造时需要发生复杂事情的类很有用,但所有后续调用都只需要访问属性。

我还想提一下,您可以(特别是在JavaScript中)导出一个实例,并且导入该模块的所有模块都可以访问同一个实例。

 类似资料:
  • 当我从协议缓冲区文件生成go代码时,我注意到每个生成的结构都实现了Message接口,https://github.com/golang/protobuf/blob/master/proto/lib.go#L277 有关生成的代码示例,请参阅https://github.com/google/go-genproto/blob/master/googleapis/rpc/status/status.

  • 我正在关注一本使用工厂方法实现单例类的书。 我知道这样做的主要目的是只有一个类的实例;但是,关键词“工厂”在颤振中究竟起了什么作用? 这是我指的一段代码: 我假设是使用

  • 问题内容: 我有一个go项目,这个项目开始变得越来越复杂,并且希望以减轻痛苦的方式布置文件系统。 是否有一些很好的例子说明什么有意义? 问题答案: 2013年5月更新:官方文档位于“ 代码组织 ”部分 Go代码必须保存在 工作空间中 。 工作区是目录层次结构,其根目录包含三个目录: 包含归类为软件包的Go源文件(每个目录一个软件包), 包含包对象,并且 包含可执行命令。 在构建源码包和安装产生的二

  • 问题内容: 我下面有这个简单的程序 请注意,我使用的是值,而不是指针。但是sync包的页面指定,和函数采用。 为什么/如何运作? 问题答案: 的设定方法的是空的方法集: 输出(在Go Playground上尝试): 这是因为所有方法都具有指针接收器,因此它们都是该类型的方法集的一部分。 当您这样做时: 这实际上是的简写,等等。 这是在规范中:致电: 如果是可寻址且方法集包含,则为的简写。 因此,当

  • 尝试fAuth=FirebaseAuthException时出错。getInstance();

  • 本文向大家介绍shouldComponentUpdate方法是做什么的?相关面试题,主要包含被问及shouldComponentUpdate方法是做什么的?时的应答技巧和注意事项,需要的朋友参考一下 shouldComponentUpdate:确定是否将更新组件。默认情况下,它返回true。如果您确定组件在状态或道具更新后不需要渲染,则可以返回false值。这是提高性能的好地方,因为如果组件收到新