Functional programming 我应该使用从可实例化类继承的单例类,还是使用';还有更好的模式吗?

Functional programming 我应该使用从可实例化类继承的单例类,还是使用';还有更好的模式吗?,functional-programming,design-patterns,Functional Programming,Design Patterns,我有一个名为ArtificialIntelligenceBase的类,您可以从中创建自己的人工智能配置,向构造函数发送一些变量,或者您可以创建一个从ArtificialIntelligenceBase继承的类,在这个新类的构造函数中,只需调用函数super()使用配置的参数 我还在课堂上创建了一些人工智能的例子,如被动、被动和辅助。显然,它们都是从人工智能库继承的 关键是基类中只有很少的公共函数。基类中的变量是只读的,非公共函数受到保护,以防在创建另一个预定义AI时需要对其进行一些修改 您还可以

我有一个名为ArtificialIntelligenceBase的类,您可以从中创建自己的人工智能配置,向构造函数发送一些变量,或者您可以创建一个从ArtificialIntelligenceBase继承的类,在这个新类的构造函数中,只需调用函数super()使用配置的参数

我还在课堂上创建了一些人工智能的例子,如被动、被动和辅助。显然,它们都是从人工智能库继承的

关键是基类中只有很少的公共函数。基类中的变量是只读的,非公共函数受到保护,以防在创建另一个预定义AI时需要对其进行一些修改

您还可以创建另一个AI,只需调用基类并在构造函数中发送一些参数,如下所示:new ArtificialIntelligenceBase(param1、param2、param3、param4)

我曾经考虑过将类作为一个单例,因为类永远不会改变,一旦设置好,它们的变量就永远不会改变

问题是:单例模式是实现这一点的最佳模式吗?因为我不确定

PD:你不需要解释任何模式,只要提到名字,我就会搜索它是如何工作的

PPD:我在AS3学习。以防万一

总的来说,谢谢你。在你的情况下,我也看不出有任何理由使用单例。听起来你在使用你自己版本的模式(不知怎么地使用构造函数?)或者a(我一点也不知道AS3),但是如果你在寻找其他模式,那么还有一些其他的模式


不过,您不需要使用singleton模式来限制自己只使用每种类型的类的一个实例。这无助于避免冗余。

我考虑使用单例来避免冗余,因为所有变量都将保持不变。例如:一旦我得到了new Aisposal()的一个实例,要在其他地方创建new Aisposal()的另一个实例,它将拥有完全相同类的两个实例,并且由于所有变量都是只读的,我认为这是有意义的。@iamnew我认为应该将框架级问题与应用程序级问题分开。singleton的大多数缺点都是框架级的(比如单元测试问题)。另一方面,在意外创建的实例上花费额外的资源对于具体的、经过良好设计和测试的应用程序来说是一个问题。因此,我的建议是向AI库中添加必要的工厂方法,并为应用程序创建单例实例。这将有点脆弱,因为您将可以访问工厂方法和单例实例,所以请确保整个团队的所有决策都是明确的。