2016-11-30 3 views
0

У меня есть классная модель под названием «Автомобиль». Если я хочу, чтобы создать новый объект «автомобиль» Я могу сделать что-то вроде этого:Правильный способ создания нового добавочного объекта

Car car = new Car(); 

Но теперь, я сделал этот класс реализует Parcelable. Каков наилучший способ создания нового объекта класса «Автомобиль»?

Прямо сейчас я делаю так:

Car car = new Car("blue"); 

И я добавляю новый конструктор для моей модели Класс:

public class Car implements Parcelable { 

    public String color; 

    @Override 
    public int describeContents() { return 0; } 

    @Override 
    public void writeToParcel(Parcel dest, int flags) { dest.writeString(color); } 

    public static final Creator<Car> CREATOR = new Creator<Car>() { 
     public Car createFromParcel(Parcel in) { return new Car(in); } 
     public Car[] newArray(int size) { return new Car[size]; } 
    }; 

    private Car(Parcel in) { color = in.readString(); } 

    public Car(String myColor) { color = myColor; } 
} 

Так как я новичок в этом классе Parcelable я не конечно, если это лучший aproach. Есть ли что-то плохое с двумя конструкторами в моем классе? Есть ли еще более эффективный способ сделать это?

Я боюсь, что добавление этого второго конструктора мое приложение должно потерять некоторую производительность при создании новых объектов этого класса.

+0

Сначала напишите чистый код. Затем оптимизируйте. Мне это кажется прекрасным. – tynn

+0

Это было бы подходящим способом создания «Parcelable». У вас не будет заметной потери производительности. Несколько конструкторов распространены в дизайне классов. – DeeV

+0

В некоторых средах может потребоваться сохранить конструктор по умолчанию, даже если он просто пуст. –

ответ

1

Поскольку я новичок в этом классе Parcelable, я не уверен, что это лучший aproach. Есть ли что-то плохое с двумя конструкторами в моем классе? Есть ли еще более эффективный способ сделать это?

Это зависит от того, что вам нужно, но ваша реализация разумных паттернов кажется okey.

Если вам необходимо эффективно передать свой объект через набор целей или аргументов, это лучший подход. Parcelable - это более эффективная реализация сериализации класса.

Если вы хотите немного менее оптимально (но проще), вы можете использовать serializable, это по умолчанию java approch, оно немного медленнее и имеет свои собственные недостатки ^^.

И если для вас важнее является читаемостью сгенерированного состояния (parcelable и сериализации сделает поток байт из вашего объекта), вы можете использовать JSon Перекодировку (и что я хотел бы предложить gson.

Я боюсь, что добавление этого второго конструктора моего приложение должно потерять некоторое представление в создании новых объектов этого класса.

Там нет ничего плохого с несколькими конструкторами. Они просто, способ инициализации состояния объекта. ничего больше ничего более.

PS: Для вашего старого метода создания автомобиля для работы:

Car car = new Car(); 

Просто добавьте пустой конструктор:

public Car() { } 

Приветствие.

Смежные вопросы