【发布时间】:2015-07-09 19:22:47
【问题描述】:
在设计类和构造函数时,我有一个关于获取记录的问题。
举个例子,如果我有汽车课
public Car
{
...
}
我可以选择创建一个可以获取特定汽车实例的构造函数,例如:
public Car(int carID)
{
//Get car from database
}
或者我可以编写一个公共方法来获取汽车:
public Car GetCarByID(int carID)
{
//Get car from database
}
是否有获取类实例的首选(最佳实践)方法?代码似乎读起来更干净,可以获取对象的实例:
Car MyCar = new Car(5);
对比
Car MyCar = new Car();
MyCar.GetCarByID(5);
【问题讨论】:
-
在这种情况下,我将有一个名为 car 的类来处理所有基本信息。 (如身份证)。然后我会有一个名为 CarCollection 的类,其中包含集合中的汽车。在这个类中,我将使用 GetCarById 方法。在该方法中,我将搜索汽车集合并返回具有该 ID 的汽车。这个问题是非常基于意见的,因为它不是这里的主题。
-
关注点分离,如果你的
car类确实是一个包含car信息的类,你应该使用数据访问层来构造car对象,不需要@ 987654329@了解数据库。 -
为什么汽车应该知道如何从数据库中获取自己?您的两个提案都不好,违反了 SRP。
标签: c# class constructor data-access