可继承单例模板类
2025-11-10
| 2025-11-12
Words 429Read Time 2 min
type
status
date
slug
summary
tags
category
icon
password

1.为什么需要一个这样的类?

首先,游戏中很多系统只需要一个实例,比如 成就系统,日志系统,配置管理器
notion image

2.实现方式

  • 将构造函数放到 private,使得外部无法进行实例化
  • 这个类的成员变量 是一个 静态实例((唯一实例容器))
  • 使用一个静态方法 去 创建这个实例(首次调用时创建实例(懒加载) 后续调用直接返回属性的静态实例)
notion image
notion image

3.可继承的单例类

单例类 的需求是 “不依赖任何实例就能访问的全局入口”,而静态方法恰好满足这个需求
一定是用静态方法来实现
但是静态方法又导致 如果有多个子类(日志系列 资源系统),子类们会共享这个父类的静态方法
创建的唯一实例也是父类,而不是自己的
为此,需要用到模板,模板可以解决这个矛盾
notion image
notion image

4.在游戏实际中的主要用途:

先创建一个单例类 A (全局唯一实例” 和 “全局访问点” 的特性)
然后添加模板(这样其他需要单例类的系统 比如日志管理器 资源管理器 就不需要重新copy一遍这个代码)
实际:
子类 (日志管理器) 模板继承 A
子类 (游戏总管理器) 模板继承 A

为什么要用模板?普通的继承不行吗?

notion image
notion image
notion image
notion image
 
  • c++
  • Locallight点光和聚光 光照计算 演示各向异性-DGF中D和G各向异性的实现
    Loading...