作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
文件a.hpp
:
class a;
typedef boost::shared_ptr<a> aPtr
class a{
public:
static aPtr CreateImp();
virtual void Foo() = 0 ;
....
};
文件aImp.hpp
:
class aImp : public a{
virtual void Foo();
};
文件aImp.cpp
:
aPtr a::CreateImp()
{
return aPtr(new aImp());
}
void aImp::Foo(){}
客户端必须使用CreateImp
获取指向a
的指针,不能使用a
其他方式。您如何看待此实现?您如何看待这种实现方式?
最佳答案
如果 Factory Method 这看起来像一个正常的实现设计模式。 boost::shared_ptr
的返回只是让程序员在内存管理和异常安全方面更容易使用此 API,并防止简单的错误,例如调用函数和忽略返回值。
如果这是基类的唯一实现,那么作者的目标可能是 pimpl idiom隐藏实现细节和/或减少编译时依赖性。
关于c++ - 这是一个好的代码吗(在阅读同事的代码时遇到的),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2488677/
我是一名优秀的程序员,十分优秀!