【发布时间】:2009-11-26 11:20:11
【问题描述】:
我想创建一个工厂来创建实现抽象接口的对象,该接口将返回对内部保存的对象的引用,并且不会复制对象。这个想法与 log4cxx/log4j Logger 类设计中的想法几乎相同。我还想尽可能多地向客户端隐藏细节,即查看暴露的 .h 文件不会显示私有成员等实现细节。 示例:
EncryptorRef = Encryptor::getEncryptor("AES");
我想知道是否有针对此类设计的已发布指南/示例代码,因为我不想重新发明轮子,而且这项任务很常见。我想过使用静态工厂方法、内部单例存储库以及对具体对象的智能指针/引用作为返回类型。问题:
- 是否有此类设计的示例简单代码? (log4cxx的代码太复杂,无法作为骨架使用)
- 如果客户端只看到纯抽象的
Encryptor类定义的encryptor.h,我该如何完全隐藏存储库? - 您是否建议使用智能引用或指针作为返回类型?是否有智能参考的标准实现?
- 我们将不胜感激任何其他建议
非常感谢!
【问题讨论】:
标签: c++ design-patterns oop factory-pattern