在项目中拥有大量单例类是不是很好的编程?

ana*_*and 3 c++ singleton

我在一个项目中有一些应该只创建一次的类.

这样做的最佳方式是什么?

  1. 它们可以创建为静态对象.
  2. 可以创建为单身人士
  3. 可以创建为全局.

实现这个的最佳设计模式是什么?

我正在考虑将所有类创建为单例,但这会产生很多单例.拥有大量单身人士是一种很好的编程实践吗?

使用单身人士的利弊是什么?

Dav*_*son 16

看看Steve Yegge的博客文章 - Singleton Considered Stupid


GMa*_*ckG 6

如果他们只需要创建一次,那并不强制他们应该是单身.

  • 如果X是单例,则暗示有一个实例.
  • 如果X有一个实例,那并不意味着它应该是一个单例.

如果您需要只有一个类的实例,并且可以全局访问,请使用单例.在你的情况下,只需要一个是不够的理由.全球都很糟糕,单身人士是美化全球的.

大多数情况下,你不需要它们.你会在糟糕的代码中看到很多因为心态:我只需要一个,这必须意味着我应该让它成为单身人士!()例如,我已经完成了迄今为止我所做过的最强大的游戏引擎的技术设计.它有2个单体,用于记忆和线程.一个非常大的项目,我只有两个!

更多背景将帮助我们为您提供更好的信息.

  • 同意,虽然我不会称单身人士为"美化全球化".它们是全局性的,带来了额外的不必要的,通常是严重的设计问题.如果你需要一些全局可访问的东西,那就把它变成一个全局的,而不是单一的. (2认同)

Mik*_*ler 5

我建议你看一下Google的MiškoHevery所做的一些视频和文章.首先是视频:"清洁代码会谈:全球状态和单身人士"他的博客.

一般的共识是,Singletons在少数情况下是可以的,例如日志记录,但在大多数其他情况下,您希望使用依赖注入.单例使得测试代码变得更加困难,并且它们隐藏了依赖关系,因此您的类无法单独实例化.