相信在做项目过程中,大家肯定会用一大堆开源库,笔者就曾经用到了BOOST、PCL、GDAL、OPENCV、GEOS等等。有时候甚至会更换某个开源库(效率问题或其他原因),甚至是编译太慢(为了智能指针就弄个BOOST进来未免大材小用了),如果能把第三方库隐藏在你自己的类下面那是再好不过了(它对你整个工程的影响只是这个类而已)。
可以使用pimpl技术,其实就是个适配器,举个栗子:
geometry.h//头文件
class geos::geom::Geometry;
class Geometry
{
public:
bool contain(vertex point);
private:
geos::geom::Geometry* m_ptGeom;
};
geometry.cpp//源文件
#include "geometry.h"
#include <geos\geom\CoordinateSequence.h>
#include <geos\geom\GeometryFactory.h>
bool Geometry::contain(vertex point)
{
return m_ptGeom->contain(point);
}
如此就把geos隐藏在你类之下了,引用Geometry时不会觉察到geos的存在,有一天你换掉geos也不会引起大规模的编译