应该使用Singleton设计模式实现用户界面吗?

时间:2008-10-30 20:53:28

标签: design-patterns oop

我无法想到应该在桌面应用程序中实例化多个独立用户界面的许多原因(或任何原因)。将UI实现为单例是一种好习惯吗?这种方法有利有弊吗?

5 个答案:

答案 0 :(得分:3)

呃...我一直打开Internet Explorer,Word和Excel的多个副本!

编辑:我也在Eudora中同时打开了几封电子邮件

我认为没有充分的理由将用户界面限制为单身......

答案 1 :(得分:2)

我能想到一对夫妇:

1)文档界面。如果您的应用程序处理文档,最好让每个文档都有自己的窗口。它使用户可以更轻松地使用操作系统的应用程序切换功能来安排工作区并在文档之间切换。许多MDI应用程序通过将多个文档集中到同一窗口来防止这种情况,这限制了多监视器场景中屏幕空间的可用性。

2)观点。通常情况下,您的UI背后的数据的几个不同视图无法轻松组合到单个UI实例中。您无法始终预测用户希望同时查看哪些数据组合,因此最好为其提供实例化多个UI的灵活性。

顺便说一句,值得注意的是,许多人认为Singleton是一种反模式。

答案 2 :(得分:1)

单身人士有什么优势?您是否了解此模式的潜在问题(例如,所有明显实现的多线程问题)?

在实践中,如果没有令人信服的理由使用它,您可能希望避免使用Singleton。对于UI来说,即使它没有多次实例化,也没有令人信服的理由。

答案 3 :(得分:1)

单身是一个全局变量。你把它作为一个全局鼓励你在你的其他类中引用你的控件(想象你的数据抽象层从数据库中获取一个名称/地址对,只是为了方便,更新你的名字/地址文本框)结果代码是脆弱和依赖变得难以解决。更容易将责任限于某一类的子集。

答案 4 :(得分:1)

对于一个错误的情况,您使用单例来拥有一个对象类型的多个实例,而不是因为您无法想到有多个实例的任何正当理由。