我应该使用单例吗?
Posted
技术标签:
【中文标题】我应该使用单例吗?【英文标题】:Should I use a singleton.? 【发布时间】:2021-07-10 13:03:31 【问题描述】:我打算使用 c++ 和 open gl 制作一个 3D 场景编辑器应用程序。而且我必须跟踪当前加载的项目和不同的场景,它还包含用户偏好和其他内容。我能想到的最好的解决方案是将它们包装在一个单独的上下文类中。有更好的方法吗?
【问题讨论】:
【参考方案1】:这可能不是一个好主意。一个原因是技术上的。实际的 OpenGL 上下文的生命周期是有限的,并且比应用程序本身要短得多,通常与您要输出到的表面有关。您需要在可视化窗口准备好后初始化上下文,并在窗口消失之前取消初始化它。在窗口消失时尝试这样做可能会根据平台结束未定义的行为。在某些情况下,您可能需要多个上下文。
另一个原因是,它看起来不像是适当的职责分离。用户设置不是上下文的一部分,但有些可能只影响单个渲染通道(复数形式)。您可能会有 Preferences、Renderer,它将作为 Context Manager 的接口、Geometries、Textures(或材质)分开,还有一个 Scene Manager(想想 Blender 或 DAZ studio 中的场景树,场景中的每个项目都可以有单独的用户设置,关于如何将它们可视化)。
【讨论】:
以上是关于我应该使用单例吗?的主要内容,如果未能解决你的问题,请参考以下文章
我正在用 Swift 编写 iOS 应用程序。我应该使用单例吗?