OOPS 设计模式,以避免对大小更改的二进制依赖

OOPS design pattern to avoid binary dependency on size change

本文关键字:依赖 二进制 设计模式 OOPS      更新时间:2023-10-16

Sample

class A
{
 public:
   int i;
}; // A.h and defined in project libA.vcxproj (libA.dll)

现在我在各种项目的多个地方使用 A 类,如下所示。Apporox 100个项目。

#include "A.h"
class UseA
{
   public:
    A *a;
    UseA(){
        a = new A();
    }
    ~UseA() {delete a;}
}

我的问题是每当我将成员变量添加到类 A 时,我都必须构建所有项目 (~100),因为类 A 的大小已更改并且构建 100 个项目非常耗时。

我想知道是否有一种设计模式可以避免在单个类的大小更改上构建如此多的项目。我也有很多类,如libA.vcxproj中定义的A类。

您可以使用痘痘成语成语。类似的东西

class A
{
public:
   A();
   ~A();
   int get() const;
private:
   class impl;
   std::unique_ptr<impl> impl_;
};
// in a.cpp
class A::impl
{
public:
   int i;
};
A::A() : impl_(new impl())
{
}
A::~A() {}
int A::get() const { return impl_->i; }