C#,存储/访问共享成员

时间:2013-04-17 09:35:47

标签: inheritance

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

这听起来像是一种常见的情况,但我不确定什么是最好的设计?也许我的想法有点开枪。

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

任何建议都将不胜感激。

1 个答案:

答案 0 :(得分:1)

我会避免使用静态建议。在大多数情况下,我发现这是不好的做法(Should you avoid static classes?)。

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

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

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

通过这种方式,模拟或替换数据池也很容易(例如,在测试中)。