我有一个关于如何在GUI对象中组织代码的问题。假设我有一个对话框,其中包含一个从数据库中获取的名称列表控件。用户可以编辑这些名称。逻辑应该驻留在该对话框类内部还是外部?为了说明我的意思,这里是一些伪代码,展示了在逻辑处理在对话框类外部时代码的结构:
NamesDialog : wxDialog
{
Private:
..stuff..
Public:
...
SetNames(wxStringArray names);
wxStringArray GetNames();
..stuff..
}
因此,该类的用户将执行以下操作:
wxStringArray names = DatabaseManager::Get()->GetNames();
names.Sort();
NamesDialogObject.SetNames(names);
NamesDialogObject.ShowModal();
wxStringArray modified_names = NamesDialogObject.GetNames();
AddToDatabase(modified_names); //or something like this.
另一方面,数据库逻辑可以存储在NamesDialog类本身中。在show方法中,我可以查询名称的数据库,并且随着用户与控件(在此情况下为列表控件)交互,数据库可以从事件处理程序进行更新。因此,NamesDialog类仅具有Show()方法,因为没有必要使用SetNames或GetNames()等方法。
通常哪种方法更受欢迎?我没有很多工作经验,所以不确定处理它的正确方式。有时在类中处理所有内容会更容易,但是访问其交互对象可能具有挑战性。通常可以通过使相关对象成为单例对象来完成,例如上面示例中的数据库管理器。