推荐一种有用的C++设计模式——PImpl

程序员咋不秃头2024-05-03 20:04:12  74

PImpl的全程是:“Pointer to Implementation”,主要用于隐藏一个类的实现细节。在C++中通过将类的实现细节移到一个单独的类,主类通过包含该类的指针实现功能的调用,从而完成隐藏类实现的功能。

实现方式如下:

class VideoControl{public: virtual void doSomething = 0; virtual ~VideoControl = default;};class VideoControlImpl : public VideoControl {public: void doSomething;};class Widget {public: Widget; ~Widget; void doSomething;private: VideoControl* pImpl;};

如上,上面的代码我们要实现的功能是对外提供一个doSomething的方法,但是又想对外隐藏实现的细节。因此在实现过程中,定义了一个抽象类VideoControl,然后创建了一个实现类VideoControlImpl 实现具体的功能,从而达到对外隐藏实现的细节。

Impl模式常被应用于SDK的开发中,日常以SDK的方式给第三方进行使用,在大型项目中使用除了上述的优点外还具备以下特点:

减少编译依赖:实现类的头文件发生改变时,只有实现类需要重新编译,主类可以保持不变,从而减少了编译时间。

降低编译时间:由于只有实现类需要重新编译,因此在大型项目中使用PImpl模式可以显著减少整体的编译时间

转载此文是出于传递更多信息目的。若来源标注错误或侵犯了您的合法权益,请与本站联系,我们将及时更正、删除、谢谢。
https://www.414w.com/read/415079.html
0
最新回复(0)