类设计,填充类

时间:2015-06-24 21:04:56

标签: c# class

我想验证我的班级设计原则。

如果我有一个Car类,我有一个公共方法GetCarByID(int id)。

首先,我需要调用Car构造函数来获取汽车的实例。

Car MyCar = new Car();

然后我可以调用GetCarByID()来填充汽车的实例。

MyCar.GetCarByID(123);

MyCar现在应该是Car类的填充实例吗?这是正确使用一个类吗?然后当我想保存我的汽车(例如回到数据库)时,我可以为save()和调用创建另一种方法。

MyCar.Save();

如果我以错误的方式考虑课堂设计,有人可以验证或纠正我吗?这是一个特定的编码模式,如果是这样的话?

2 个答案:

答案 0 :(得分:1)

您的第一行实际上创建了Car的实例:

Car myCar = new Car()

听起来你可能想要一个名为GetCarByID(int ID)的Car类中的公共 static 方法,它可以获取一个ID并返回该ID所代表的汽车实例。可能的实施方式如下:

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
}

答案 1 :(得分:1)

这不是一种建议的方法。实例化类的实例时,实例应该是完全可用的。调用构造函数时,传入必要的参数以成功创建实例。您不应该在构造之后调用方法来完成实例的“填充”。在调用Car之前,有人可能认为GetCarByID实例的原因是可用的,导致各种令人头疼/可维护性问题,特别是对于其他开发人员。

E.g:

Car MyCar = new Car("123");

其中构造函数:

public Car(string ID)
{
   _id = ID;
}