我希望有类似下面的代码:
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
。
答案 0 :(得分:2)
如果DataModifier获取对Data对象的引用以便在适当的位置进行修改,那么从封装的角度来看它非常好。如果你让DataModifier Foo的朋友成为一个瑕疵,那么它可以随时更改其成员,而无需调用任何Foo的方法。如果您决定在Foo之外的某个地方存储对私有数据的引用,而不是将其传递给DataModifier,我也会认为它设计不好。