我想要类似下面的代码:

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/

10-11 11:45