想象一下,我有一个Device类。我不希望程序员能够实例化他自己的Device对象,所以现在我创建一个DeviceManager类。 DeviceManager是将被实例化的唯一实体,并通过让程序员指定某种ID来使程序员能够访问Device对象。这样,程序员仅需要清理DeviceManager类,并且不会留下任何杂散的Device对象。我主要关心的是如何根据好学的垃圾回收来控制对对象的访问。就像我在C ++中描述的一个好主意一样,这是“经理”模式吗?谢谢!
最佳答案
如果您确实需要,可以。
要实现此控制,可以使Device
private
的构造函数并将DeviceManager
声明为Device
类中的受保护对象。
class Device
{
private: //not necessary, private by default
Device();
friend class DeviceManager;
};
class DeviceManager
{
public:
Device* getDevice();
};
您还可以返回指向
Device
的智能指针(推荐),并根据需要将创建的设备保留在DeviceManager
中。这称为实例管理器模式。
DeviceManager
也是设备的工厂。同样,C ++没有垃圾回收,但是如果您使用智能指针,则不必担心内存管理。
关于c++ - 如何在c++中控制对对象的访问?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9727041/