基本上,我有一个使用单一DefaultTreeModel的树视图。
用单例来扩展JTree,用另一个单例来扩展DefaultTreeModel,行吗?
如果没有,那么避免对每个对象使用单例的原因是什么?
发布于 2011-06-28 09:00:05
当一个实例在整个程序的使用中必须是唯一的时,Singleton模式通常是最好的。如果您使用的是swing,那么使用单例可能不是一个好主意,除非swing已经使用singleton模式来为您提供实例(从而挫败了自己编写它的目的)。一般来说,应该避免单例,因为在某种程度上,这就像在C++中使用全局变量一样。在整个程序中拥有一个可用的实例意味着可能会失去使用它的位置和它应该处于什么状态的范围。它最终会增加程序中的混乱,如果可以通过共享一个实例来避免,最好这样做。
您可能想要做的是重用相同的Tree实例,您可以通过将它作为参数传递给您要创建的任何框架来实现这种效果。Tree对象可以定义自己的视图,因此,通过使用Tree的单个实例,还可以确保使用它的视图的单个实例(假设以后不对其进行更改)。
https://softwareengineering.stackexchange.com/questions/87603
复制相似问题