继承和单例或静态对象数组

时间:2015-04-12 13:34:43

标签: c++ inheritance dictionary singleton

我正在用C ++编写一个小程序,我正面临着如何实现某些东西的选择。

我找到了两个可能的实施方案来解决我遇到的特定问题,并希望您就是否有更好的问题提出建议。比另一个。

我上课了,我们称之为Letter。 我想创造不同的对象' :A,B,C,D ......

每个对象都将在我的软件中多次使用(作为其他对象的属性)。 A将始终相同,因此每次需要A时都不需要创建A对象。

  1. 我为每个继承自Letter的A,B,C ......创建一个类。这些类中的每一个都是单身。通过这样做,我可以通过调用A :: getInstance()静态方法在软件的其余部分的任何地方使用A对象。

  2. 我将每个A,B,C,D创建为类Letter的对象,并将这4个对象存储在静态数组中。在我的整个程序中,我将使用该数组的内容。为了轻松访问这些对象,我可能会创建一个枚举并将对象存储在地图而不是数组中。

  3. 你认为其中一种解决方案应该优先于另一种吗?

    正如我先前所说,欢迎任何其他建议: - )

    此致

1 个答案:

答案 0 :(得分:0)

这里的各个方面可能会影响您的决定。

有些人不喜欢单身,因为他们是全球性的对象而且他们不喜欢全球性的对象。如果您的对象应该是全局的,那么将其设为全局。

有些人认为如果你有一个单例对象,那么它应该是该类的唯一实例。但是,如果你有一个类的几个不同的实例,每个实例都像单例一样,创建多个子类只是为了确保一个类只有一个实例,这是毫无意义的。 (Cocoa编程中的一个示例是NSCharacterSet,其中您有不同的实例,例如表示字母的NSCharacterSet,一个用于数字,一个用于作为Java标识符的一部分有效的字母,依此类推)。

如果要访问数组的第n个元素,则应该只创建一个数组,并且相同的语句可以引用不同的数组元素。看起来你想要具有不同目的的独特对象;使它们成为阵列将再次毫无意义。