我对C++ 11还是个新手。什么C++习语/模式是这样的
前段时间我问以下问题:
Best method to implement an abstract factory pattern
为了研究更多一些,我想知道这是什么C++成语的名称。
这里我称它为pimpl
,但我不确定这是否是正确的名称。
整个事情的目的是在从工厂返回Shape对象时隐藏原始指针或智能指针。使用这个“模式”工厂将能够返回一个和相同的类型,具体的实现将被封装在对象内部。
它也非常类似于decorator
,除非它不装饰任何东西。
除了外部接口与“内部”接口相同之外,人们也可以发现类似于adapter
。
class PimplShape : public Shape{
Shape *sh;
public:
PimplShape(Shape *sh) : sh(sh){
}
virtual ~PimplShape() override{
delete sh;
}
virtual void process() override {
sh->process();
}
};
“从工厂返回Shape对象时”这是如何完成的?您没有方法返回包含的Shape。而且,这将创建一个完整的Shape,它本身必须包含指向另一个Shape的指针。我不确定那是你想要的,是吗?似乎对我来说是多余的。 –
http://stackoverflow.com/questions/31494734/best-method-to-implement-an-abstract-factory-pattern - 检查这一点。如果使用这种方式,工厂将始终返回一个和相同的类型。具体的实现将被封装在这种类型中。 – Nick
你的班级做的那个unique_ptr不是什么? – Pumkko