gpt4 book ai didi

c++ - pimpl idiom vs. bridge 设计模式

转载 作者:IT老高 更新时间:2023-10-28 12:45:00 32 4
gpt4 key购买 nike

我刚刚注意到一个新术语 pimpl idiom,这个 idiom 与 Bridge 设计模式有什么区别?我对此感到困惑。

我还注意到 pimpl 惯用语总是用于交换功能,那是什么?谁能举个例子?

最佳答案

PIMPL 是一种隐藏实现的方式,主要是为了打破编译依赖。

另一方面,桥接模式是一种支持多种实现的方式。

swap 是一个标准的 C++ 函数,用于交换两个对象的值。如果将指向实现的指针交换为不同的实现,则本质上是在运行时更改类的机制。

但在其基本和通用形式中,使用 PIMPL 的类指向单个实现,因此不存在具有不同子类的抽象类——只有一个类,前向声明并在别处编译。更改实现类不需要重新编译包含主 header 的源代码。

例如,假设您有很多私有(private)成员函数、私有(private)枚举和私有(private)数据。随着类的开发和维护,这些私有(private)的“位”变化相当频繁。如果 #include 依赖关系使得接触这个头文件会导致大量源代码被重新编译,那么你就有一个很好的 PIMPL 候选者。

所以 Bridge 模式是关于面向对象的设计,而 PIMPL 成语是关于文件的物理设计。

(有关物理设计的更多信息,我推荐 John Lakos 的书 Large-Scale C++ Software Design。)

关于c++ - pimpl idiom vs. bridge 设计模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2346163/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com