使用Static类或Abstract类进行对象创建

时间:2012-03-26 20:01:34

标签: java android

所以我有一个普遍的问题。让我们说我想在这个程序中创建汽车对象我正在编写,我必须创建数百个这个汽车对象。创建汽车抽象类并在制作我的汽车对象(即丰田汽车,日产汽车等)时扩展它是否更好?或者我可以使用一堆静态类来保存特定对象的细节并在一般情况下使用它汽车对象要制造丰田还是日产?我认为使用抽象方法应该是非常自我解释的,但这是第二种方法的一个例子:

public class CarNames {

public static String getCarName(int pCarIndex){

    switch (pCarIndex) {
    case 0:         
        return "Toyota";
    default:
        throw new Error("pCarIndex does not exist!");
    }
}

}

在此类中用于创建对象:

public class Car{

    private int mCar_ID;//This indicates which Car to load
    private String mCarName;

public Car(int pCar_ID){
    mCar_ID = pCar_ID;
            mCarName = CarNames.getCarName(pCar_ID);
            //Do Stuff with collected parameters 
}

}

让我知道一些事情是否有意义。感谢。

编辑:汽车可能有不同的参数,如尺寸,引擎等。我选择抽象类的原因是因为我认为它提供了比界面更多的灵活性,因为我可以添加方法。

2 个答案:

答案 0 :(得分:3)

  

创建汽车抽象类并在制作我的汽车对象(即丰田,日产等)时扩展它是否更好?或者我可以使用一堆静态类来保存特定对象的细节并使用它在一般的汽车对象制造丰田或日产?

都不是。您只有一个Car类和一个包含特定车辆详细信息的文件(例如数据库)。然后,您可以根据文件内容创建该Car类的实例。

  

汽车可能有不同的参数,如尺寸,发动机等。

过去半个世纪的程序员将此称为“数据”。您在源代码中烘焙的数据越少越好。

答案 1 :(得分:1)

我准备采取这个...我不确定你的目标到底是否易于维护或记忆......或者我会猜测,因为这是一个Android问题,你担心的是有记忆。特别是当你谈论100个物体时。

我首先想到flyweight pattern它将允许这些对象共享内存并拥有更小的占用空间。但我正在使用@CommonsWare答案......你所谈论的部分内容是数据。如果我理解你的问题,你的计划是根据看起来效率不高的cardId在代码中定义汽车的所有不同部分。这听起来像数据,无论是xml还是sqllite数据库。

你可能在谈论日产汽车,这可能最终成为扩展抽象级汽车的类型(类),但发动机的尺寸,高度,宽度和汽油里程都是数据。