0

我希望有许多从基类派生的类似子类(单例)(最好是抽象的,因为不需要创建基类)。这些子类相互交互,最重要的是,我希望它们共享对特定数据池的引用(不是很多)。

这听起来像是一个常见的场景,但我不确定最好的设计是什么?也许我的脑子有点出问题了。

我认为没有必要将公共/共享成员从类结构中分离出来,但我不确定如何最好地存储/访问它。我想尽量避免传递它,尽管在功能上它可能是有意义的。

任何建议,将不胜感激。

4

1 回答 1

1

我会避免按照建议使用静态。我发现在大多数情况下这是不好的做法(你应该避免使用静态类吗?)。

另一种方法是创建一个 DataPool 类(和 IDataPool 接口),并将一个实例(只有一个实例)注入到您的单例中(单例类接受 IDataPool 参数)。

然后,此 DataPool 类将提供与池数据交互所需的所有方法,并保存数据本身。事实上,它抽象了访问数据的方式,因此很容易在你的单例类中重用。

您可以使用 IoC 容器来决定生命周期,或者使用 new 运算符在其他地方创建实例。

这样,也很容易模拟或替换数据池(例如在您的测试中)。

于 2013-04-17T09:44:44.477 回答