我想要类似下面的代码:
class Foo{
public:
void update() {
for( auto dataModifier : _dataModifierList ) {
dataModifier.modify( Data& _data );
}
};
private:
Data _data;
std::vector<DataModifier> _dataModifierList;
};
因为我正在将
Foo
的数据发送到另一个对其进行修改的类,所以这是否被认为封装不好?感觉就像我要将Foo
的内容公开给DataModifier
。之所以这样,是因为我想向Foo的每个实例注册多个
DataModifier
。 最佳答案
如果DataModifier获得对Data对象的引用以对其进行适当的修改,那么从封装的角度来看,它是完全可以的。如果您使DataModifier Foo成为朋友,那么它可以随时更改其成员而无需调用任何Foo的方法,那将是一个缺陷。而且,如果您决定将对私有data_的引用存储在Foo之外的某个地方,然后再将其传递给DataModifier,那么我也会认为这是不好的设计。
关于c++ - 封装:是否应该将对象的数据传递给另一个修改它的类?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36159985/