我应该使用从可实例化类继承的单例类还是另一种更好的模式?

时间:2011-05-03 23:17:07

标签: functional-programming design-patterns

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

我还在课堂上创建了一些人工智能的例子,A​​IPassive,AIAgressive和AIDefensive。显然,所有这些都继承自ArtificialIntelligenceBase。

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

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

我一直想把这些类作为一个单例,因为类永远不会改变,一旦设置,它们的变量永远不会改变。

问题是:单身人士是最好的模式吗?因为我不确定。

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

PPD:我正在开发AS3。以防它有帮助

由于

1 个答案:

答案 0 :(得分:2)

一般来说,singletons are evil。在你的情况下,我认为没有任何理由使用单身人士。听起来你正在使用自己版本的factory method模式(使用构造函数以某种方式?)或者可能是prototype(我不知道AS3一点),但如果你正在寻找对于其他模式,其他几种模式是abstract factorybuilder

但是,您不需要使用单例模式来限制自己仅为每种类型使用一个实例。它无助于避免冗余。