Pimpl(Pointer to Implementation)是一種設計模式,它將類的接口部分和實現部分分離開來,使得實現部分可以更容易地進行修改而不影響接口部分。在C++中,Pimpl模式通常通過使用指向實現類的指針來實現。
下面是一個簡單的使用Pimpl模式的C++代碼示例:
// Widget.h
#ifndef WIDGET_H
#define WIDGET_H
class WidgetImpl;
class Widget {
public:
Widget();
~Widget();
void doSomething();
private:
WidgetImpl* pImpl;
};
#endif
// Widget.cpp
#include "Widget.h"
class WidgetImpl {
public:
void doSomething() {
// 實現部分
}
};
Widget::Widget() : pImpl(new WidgetImpl()) {}
Widget::~Widget() {
delete pImpl;
}
void Widget::doSomething() {
pImpl->doSomething();
}
// main.cpp
#include "Widget.h"
int main() {
Widget w;
w.doSomething();
return 0;
}
在這個示例中,Widget類的接口部分只包含了公有函數doSomething(),并且實現了一個WidgetImpl類用于實現doSomething()函數。Widget類中使用了一個指向WidgetImpl對象的指針pImpl來完成接口和實現的分離。
通過使用Pimpl模式,我們可以避免暴露實現細節,使得代碼更加模塊化和可維護。另外,當需要修改實現部分時,只需要修改WidgetImpl類,而不需要修改Widget類的接口部分,從而減少了代碼的耦合性。