Java 单例和其他设计问题
我使用过不同的语言,比如C++/Java,目前使用的是AS3。大多数应用是计算机视觉和小型2D电脑游戏。我工作过的大多数公司都使用AS3之类的语言中的单例来轻松检索元素或类。他们的问题基本上是他们需要一些变量或者从其他类调用其他函数。在像AS3这样的语言中,没有私有构造函数,他们编写了一个黑客代码来防止出现新实例 在爪哇和C++中,我也面临着需要使用其他类成员或在不同的类中调用它们的函数的情况。p>Java 单例和其他设计问题,java,c++,actionscript-3,oop,design-patterns,Java,C++,Actionscript 3,Oop,Design Patterns,我使用过不同的语言,比如C++/Java,目前使用的是AS3。大多数应用是计算机视觉和小型2D电脑游戏。我工作过的大多数公司都使用AS3之类的语言中的单例来轻松检索元素或类。他们的问题基本上是他们需要一些变量或者从其他类调用其他函数。在像AS3这样的语言中,没有私有构造函数,他们编写了一个黑客代码来防止出现新实例 在爪哇和C++中,我也面临着需要使用其他类成员或在不同的类中调用它们的函数的情况。p> 问题是,有没有更好的设计,让其他类在不使用单例的情况下彼此交互?我觉得组成就是答案,但我需要更详
问题是,有没有更好的设计,让其他类在不使用单例的情况下彼此交互?我觉得组成就是答案,但我需要更详细的解决方案或设计建议 单例模式错误地将两个问题混为一谈(或者我应该说,大多数或所有观察到的使用都是这样):
- 您需要一个全局变量
- 您希望将程序中存在的给定类的实例数限制为1
如果您希望类中的每个实例都表现相同,则考虑“BoG模式”:编写一个类,其实例没有自己的状态,而是每个实例在全局状态下运行。 即使您决定确实需要其类型唯一的对象,您仍然应该正确评估全局访问它是否合适,或者它是否应该是使用它的组件的注入依赖项
我能想到的唯一一种特殊情况是,对语言具有特殊意义的值的类型可以合法地为单例,以便在实现中使用特殊技巧。例如,Python中的
None
是一个类型为NoneType
的单例。我认为在所有这些情况下,类型都是不可变的。单例模式错误地将两个问题合并在一起(或者我应该说,大多数或所有观察到的使用都是这样):
- 您需要一个全局变量
- 您希望将程序中存在的给定类的实例数限制为1
如果您希望类中的每个实例都表现相同,则考虑“BoG模式”:编写一个类,其实例没有自己的状态,而是每个实例在全局状态下运行。 即使您决定确实需要其类型唯一的对象,您仍然应该正确评估全局访问它是否合适,或者它是否应该是使用它的组件的注入依赖项
我能想到的唯一一种特殊情况是,对语言具有特殊意义的值的类型可以合法地为单例,以便在实现中使用特殊技巧。例如,Python中的
None
是一个类型为NoneType
的单例。我认为在所有这些情况下,类型都是不可变的。单例模式错误地将两个问题合并在一起(或者我应该说,大多数或所有观察到的使用都是这样):
- 您需要一个全局变量
- 您希望将程序中存在的给定类的实例数限制为1
如果您希望类中的每个实例都表现相同,则考虑“BoG模式”:编写一个类,其实例没有自己的状态,而是每个实例在全局状态下运行。 即使您决定确实需要其类型唯一的对象,您仍然应该正确评估全局访问它是否合适,或者它是否应该是使用它的组件的注入依赖项
关于我能想到的唯一特殊情况是,ha