我希望从基类派生出许多类似的子类(单例)(抽象优选,因为基础不需要创建)。这些子类彼此交互,最重要的是,我希望它们共享对特定数据池的引用(不是很多)。
这听起来像是一种常见的情况,但我不确定什么是最好的设计?也许我的想法有点开枪。
我认为不必将公共/共享成员从类结构中分离出来,但我不确定如何最好地存储/访问它。我想尽量避免传递它,虽然在功能上它可能有意义。
任何建议都将不胜感激。
答案 0 :(得分:1)
我会避免使用静态建议。在大多数情况下,我发现这是不好的做法(Should you avoid static classes?)。
另一种方法是创建一个DataPool类(和IDataPool接口),并将一个实例(只有一个实例)注入单例(singleton类接受一个IDataPool参数)。
然后,此DataPool类将提供与池数据交互所需的所有方法,并保留数据本身。实际上,它抽象了数据的访问方式,因此很容易在单例类中重用。
您可以使用IoC容器来决定生命周期,或使用new运算符在其他地方创建实例。
通过这种方式,模拟或替换数据池也很容易(例如,在测试中)。