类设计,填充类的实例
本文关键字:实例 填充 | 更新日期: 2023-09-27 17:59:46
我想验证我的类设计主体。
如果我有一个类Car,并且有一个公共方法GetCarByID(int id)。
首先,我需要调用Car构造函数来获取汽车的实例。
Car MyCar = new Car();
然后我可以调用GetCarByID()来填充汽车的实例。
MyCar.GetCarByID(123);
MyCar现在应该是Car类的已填充实例吗?这是一个类的正确用法吗?然后,当我想保存我的车(例如,回到数据库)时,我可以为save()创建另一个方法并调用。
MyCar.Save();
如果我对课堂设计的想法有误,有人能验证或纠正我吗?这是一种特定的编码模式吗?如果是,是什么?
您的第一行实际上创建了Car
:的实例
Car myCar = new Car()
听起来你可能想要一个名为GetCarByID(int ID)
的Car类中的公共静态方法,它可以接受一个ID并返回由该ID表示的Car实例。可能的实现如下:
public static Car GetCarByID(int id)
{
// Search a list of cars by ID, and return it
}
您可能希望将所有创建的汽车添加到Car类中的某个静态列表中,可能是在主Car构造函数中。
或者,您可以使用工厂,在那里您可以执行以下操作:
public static Car CreateCarByID(int id)
{
// Create a car with the given ID (using a private constructor) and return it
Car myCar = new Car(id);
return myCar;
}
private Car(int id)
{
// Save ID to field
}
这不是一个建议的方法。当实例化类的实例时,该实例应该是完全可用的。当您调用构造函数时,您会传入成功创建实例所需的参数。您不应该在构造之后调用方法来完成实例的"填充"。原因是,在调用GetCarByID
之前,有人可能会认为Car
实例是可用的,这会导致各种令人头疼的问题/可维护性问题,尤其是对其他开发人员来说。
例如:
Car MyCar = new Car("123");
其中构造函数:
public Car(string ID)
{
_id = ID;
}