实际上,我的问题与语言有关(我正在使用C ++)。
我上课
sturct StudentInfo
{
// lots of fileds
string id;
string name;
int age;
double height;
......
};
class IListner
{
void OnStudentInfoChanged(StudentInfo aLatestInfo);
};
void ListenStudnetInfoChange(IListener* aListener);
我希望如果用户收到回调OnStudentInfoChanged
接收方可以区分正在更新的字段。
我不知道是否有一个优雅的模式可以解决这个问题。
我直观的解决方案是提供1-1映射枚举
喜欢
enum StudentInfoFields
{
field1,
field2,
....
};
并更改
void OnStudentInfoChanged(StudentInfo aLatestInfo);
到
void OnStudentInfoChanged(vector<StudentInfoFields> aWhichAreChanged,
StudentInfo aLatestInfo);
我认为这不是一个好主意,但我不知道要让用户知道。
请给我一些建议:)
谢谢。
答案 0 :(得分:0)
观察者模式看起来像您所需要的,其主要思想是StudentInfo
的每个实例都应保留一个观察者列表,并在其更新时通知他们。