hd1*_*112 5 c++ user-interface wxwidgets design-patterns
我有一个关于如何构建与 GUI 对象相关的代码的问题。假设我有一个对话框,它有一个列表控件,该控件有一堆从数据库中获取的名称。用户可以编辑名称。逻辑是驻留在该对话框类中还是应该来自外部。为了说明我的意思,这里有一些伪代码显示了在对话框类之外处理逻辑时的代码结构:
NamesDialog : wxDialog
{
Private:
..stuff..
Public:
...
SetNames(wxStringArray names);
wxStringArray GetNames();
..stuff..
}
Run Code Online (Sandbox Code Playgroud)
因此,该类的用户会执行以下操作:
wxStringArray names = DatabaseManager::Get()->GetNames();
names.Sort();
NamesDialogObject.SetNames(names);
NamesDialogObject.ShowModal();
wxStringArray modified_names = NamesDialogObject.GetNames();
AddToDatabase(modified_names); //or something like this.
Run Code Online (Sandbox Code Playgroud)
另一方面,数据库逻辑可以驻留在NamesDialog 类本身中。在 show 方法中,我可以查询数据库的名称,并且当用户与控件(在本例中为列表控件)交互时,可以从事件处理程序更新数据库。因此 NamesDialog 类只有 Show() 方法,因为不需要使用 SetNames 或 GetNames() 等。
通常首选哪种方法?我没有太多的工作经验,所以我不确定哪种是处理它的正确方法。有时,处理类中的所有内容更容易,但访问与之交互的对象可能具有挑战性。通常可以通过让相关对象像上面示例中的数据库管理器一样成为单例来实现。
| 归档时间: |
|
| 查看次数: |
450 次 |
| 最近记录: |