类设计,填充类的实例

本文关键字:实例 填充 | 更新日期: 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;
}