我有一个Win32 C ++程序,用于验证用户输入并使用状态信息和选项更新UI。目前它是这样写的:
void ShowError() {
SetIcon(kError);
SetMessageString("There was an error");
HideButton(kButton1);
HideButton(kButton2);
ShowButton(kButton3);
}
void ShowSuccess() {
SetIcon(kError);
std::String statusText (GetStatusText());
SetMessageString(statusText);
HideButton(kButton1);
HideButton(kButton2);
ShowButton(kButton3);
}
// plus several more methods to update the UI using similar mechanisms
我不喜欢这样,因为它会复制代码并导致我在UI中发生更改时更新多个方法。
我想知道是否有设计模式或最佳做法来删除重复并使功能更易于理解和更新。
我可以在config函数中整合代码并传入标志来启用/禁用UI项目,但我不相信这是最好的方法。
有任何建议和想法吗?
答案 0 :(得分:1)
我建议使用观察者模式和状态模式,当验证成功或不成功时,附加按钮可以根据“通知”方法中提供的信息更改其状态。有关更多详细信息,请参阅GoF的书籍,或者只是谷歌搜索它们。希望它有所帮助。