【发布时间】:2008-10-30 20:53:27
【问题描述】:
我想不出许多(或根本没有)应该在桌面应用程序中实例化多个独立用户界面的原因。将 UI 实现为单例是一种好习惯吗?这种方法有优点还是缺点?
【问题讨论】:
标签: design-patterns oop
我想不出许多(或根本没有)应该在桌面应用程序中实例化多个独立用户界面的原因。将 UI 实现为单例是一种好习惯吗?这种方法有优点还是缺点?
【问题讨论】:
标签: design-patterns oop
呃...我一直打开多个 Internet Explorer、Word 和 Excel 副本!
编辑:我还在 Eudora 中同时打开了几封电子邮件
我认为没有充分的理由将用户界面限制为单例...
【讨论】:
我能想到几个:
1) 文档界面。如果您的应用程序处理文档,最好让每个文档都有自己的窗口。它使用户可以更轻松地使用操作系统的应用程序切换功能来安排他们的工作空间和在文档之间切换。许多 MDI 应用程序通过将多个文档关联到同一个窗口中来防止这种情况发生,这限制了多显示器场景中屏幕空间的可用性。
2) 视图。通常情况下,UI 背后数据的多个不同视图无法轻松组合在单个 UI 实例中。您无法始终预测用户希望同时看到哪些数据组合,因此最好让他们灵活地实例化多个 UI。
顺便说一句,值得注意的是,许多人认为 Singleton 是一种反模式。
【讨论】:
单身能给你带来什么好处?您是否意识到这种模式的潜在问题(例如所有明显实现的多线程问题)?
在实践中,如果没有令人信服的理由使用它,您可能希望避免使用 Singleton。对于 UI,即使没有多次实例化,实际上也没有令人信服的理由。
【讨论】:
单例是一个全局变量。您将其设为全局会鼓励您在所有其他类中引用您的控件(想象一下您的数据抽象层从数据库中获取名称/地址对,为了方便起见,在此处更新您的名称/地址文本框)结果代码是脆弱,依赖关系变得难以解决。只需将责任限制在某个类的某个子集上就容易多了。
【讨论】:
您使用单例的情况是错误 拥有多个对象类型的实例,而不是因为您想不出任何好的理由拥有多个实例。
【讨论】: