class CommandSchedule
{
private :
List<SubSchedule*> mSubScheduleList;
public :
void addSubSchedule (int id)
{
mSubScheduleList.add(new SubSchedule(id));
}
SubSchedule* addSubSchedule (int id)
{
SubSchedule* item = new SubSchedule(id);
mSubScheduleList.add(item);
return item;
}
};
在这个类中,我定义了 2 个 addSubSchedule 函数,一个返回 void,一个返回指向对象的指针。
所以,我的问题是,如果返回对象指针的函数破坏了 CommandSchedule 类的封装?我对封装问题感到不安,因此非常感谢您的帮助。
最佳答案
为什么会破坏封装?您的对象的内部表示仍然是隐藏的:
private :
List<SubSchedule*> mSubScheduleList;
除非SubSchedule
也被认为是内部表示,这里没有问题。
在一个封装良好的类中,只有它的成员函数可以操作它的内部细节。在这种情况下,一个 List
的事实使用似乎是一个细节,因为公共(public)接口(interface)的用户关心的只是该类允许他添加子计划。如何存储这些子计划是一个内部细节。您稍后可以更改此详细信息(例如,将它们存储在 SortedList
中)而不影响公共(public)界面的用户。所以,制作List<...>
变量 private 促进了良好的封装。
如果界面的用户希望能够操作SubSchedule
直接对象,那么暴露它就没有问题。但如果没有理由这样做,那么使用 SubSchedule
s 可能也是一个内部细节,因此不应在公共(public)界面中公开。
关于c++ - 封装和指向对象的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8932923/