Class Design and Collections
如果我有一个类定义为:
1 2 3 4 5 6 7 8 | public class Car{ public int doors {get;set} public int wheels {get;set} public string make {get;set} public string model {get;set} public Car(){} } |
我想创建这个类的集合。过去,我知道创建集合类是可以接受的:
1 | public class CarCollection{}; |
那将归还一批汽车。
对于泛型列表,我现在理解不应该创建集合类,而应该创建继承某些集合类型的对象的泛型列表。
我的问题是,这个代码应该放在哪里,这个方法应该有什么定义?例如,我应该向我的Car类添加一个公共方法:
1 2 3 4 | public List<Car> GetAllCars() { ... } |
如果是这样的话,实例化一个汽车类来获取汽车集合似乎很奇怪,但我知道将其声明为共享类也不是正确的选择。我们应该如何设计我们的类集合,以及应该在哪里包含它们?
这一切都取决于你想如何使用这些汽车。但是在您在注释中提到的场景中,我建议您研究存储库模式,它是业务逻辑和数据库之间的中间层。
因此,您可以将
1 2 3 4 5 6 7 8 9 | public class CarRepository { public List<Car> GetAllCars() { // read data from DB and return list } public Car GetSingle(int carId) { // here you just return single car } } |
这只是想让你知道怎么做。更进一步,您可以扩展这个概念,引入接口以方便测试和交换存储库的实现。然后您可以拥有一个具有多个实现的单一接口——一个用于从数据库读取,另一个用于从XML文件读取。
网上有很多关于这方面的阅读材料。