0

我必须为某些类型的对象创建简单的单例对象工厂。问题是我找不到阻止用户通过构造函数创建对象实例的聪明方法。我知道我可以将构造函数移动到私有/受保护部分,但是当构造函数是私有/受保护时,工厂现在将如何创建新对象?让工厂成为每个班级的朋友并不是很聪明,因为我需要在每个标题中预先声明工厂并编写额外的“朋友工厂”;在每个班级。如何正确执行此操作?

4

1 回答 1

2

在类中,添加一个静态成员作为指向该类相同类型的指针。这将是你的单身人士。

初始化实例时,将运行构造函数。

如果是第一次,静态成员为空(从未初始化),正常运行构造函数并设置默认值。最后还将静态成员设置为this. 现在您的单例已初始化。

在随后的构造函数调用中,静态指针不会为空。创建一个指向类类型的临时指针。将此指针设置为this,然后设置this为静态成员并删除指针。这将每次都删除新实例并返回相同的静态实例。

于 2018-05-19T19:28:38.153 回答