gpt4 book ai didi

c++ - 不同类访问的数据的单一拷贝

转载 作者:行者123 更新时间:2023-11-28 06:58:21 24 4
gpt4 key购买 nike

我有一个包含大量数据成员和函数的类,其中每个函数都有一些自己的功能,并使用类的成员变量做一些工作。

主要的问题是随着功能被添加到类中,类代码越来越大,难以维护。

这里这个类是被调用并输出一些结果的接口(interface)。

我想把这个类作为基类,为每个函数创建一个派生类,它们相互独立,可以使用基类的公共(public)数据成员。但这里的问题是,每个派生类都将包含一个单独的数据成员拷贝,而且其他模块应该不知道这些派生类。

我知道这可能是一个更简单的问题,但是谁能指出我可以在这里引用哪种设计模式。

最佳答案

实现共享应该通过组合而不是继承来更好地完成。继承模型是一种关系(Liskov 替换原则)。从描述来看,听起来类应该被分成更小的类,希望有一个单一的责任(单一责任原则)。然后,将这些类作为构造函数或需要它们的函数中的参数传递给您的客户端代码。然后可以通过持有指针、引用或 - 推荐 - shared_ptr 来在多个类之间共享对象。

class BigClass {
public:
// lots of functions here
};

class Client1 {
public:
Client1(std::shared_ptr<BigClass> b): mBigClass(b) {}

void member() {
// do something with mBigClass
}
private:
std::shared_ptr<BigClass> mBigClass;
};

但我强烈建议考虑将其拆分(参见接口(interface)隔离原则)。

关于c++ - 不同类访问的数据的单一拷贝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22878083/

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