将一个单独的GUI在这种情况下,好不好?(Would a singleton GUI be good

2019-09-27 05:28发布

我工作的一个项目,我有很多的指我的GUI(主要是板材,但有时框架本身)班。 所以我在想,而不是通过框架作为参数传递给每一个构造函数和getter方法创建每个班,我会做的JFrame的单一实例,因此所有的类可以访问它来代替。 这是一个很好的做法,否则将只是惩罚我的懒惰以某种方式?

编辑:我不只是懒惰,我试图想在这里模式:例如,假设我有各种各样的汽车对象的,路是我的GUI。 所有的汽车应该获得同样的道路,道路是不是汽车的一部分。

Answer 1:

有很多在该地区的意见,见下文引用的材料。

我的感觉是,我们应该尽量避免单身是因为“有没有这样的号码作为1”。

[这从我的理论遵循对“有没有这样的号码作为2”。 如果你有代码,允许两个东西,只有两个东西,那么你已经错过了一招 - 有几乎肯定是超过两个,而不是解决如何应对“多”。

在“没有这样的号码作为1个说法”是,当你认为有可能仅是一个东西会有一些情境中,它可能有更多...它通常是非常少的额外工作,以允许更多。

看看你的榜样......我有各种汽车的对象,他们都有机会获得同样的路? 这听起来像一个现实世界的模型? 英国道路和法国的道路,有什么区别? ;-)为什么要建立一个“只有一个”假设到你的代码?

工厂和那些工厂的依赖注入的使用往往会是更好的答案。 很多在回答这个更多的材料问题 。



Answer 2:

单件模式在今天被认为是一种“反模式”。 这个问题将变得明显,当你的汽车需要用不同的路有一天会。

如果你决定单元测试的汽车为自己将变得更加明显。 如果你不能提供的路模拟,你将如何对其进行测试? 而你将不能够,因为他们通过一个Singleton指他们的路。

(显然,有一个变通方法由具有辛格尔顿当“测试模式”返回MockRoad,但这只是意味着你要添加测试代码到你的产品代码。)



Answer 3:

更好的办法是躲在静态方法主要的JFrame,但总的来说这是一个好主意,如果你只有一个对整个方案进行反正是静态的JFrame对象。

隐藏背后的静态方法可以确保,如果你在这方面努力与其他人可以约束你希望他们能够在主JFrame的访问内容,但将这样的事情学校项目等是无用的



文章来源: Would a singleton GUI be good in this case?