Класс, какие обновления объекта


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

Я рассмотрел добавление функции, которая возвращает объект, чтобы обновить в собственный статический метод:

ObjectToUpdate = Utils.getObjectToUpdate(id)

Есть ли лучший способ или паттерн проектирования?

UpdateContestantObj c = new UpdateContestantObj(childWithParentRatingsObject.getCoupleId());
c.getContestantObj().setSortVal(singleScoringFM.getScore());
c.persistContestant();

public class UpdateContestantObj {

    private String id;
    private ContestantObj contestantToSave = null;

    public ContestantObj getContestantObj(){
        return this.contestantToSave;
    }

    public UpdateContestantObj(String id){
        this.id = id;

        SimpleSortingVector simpleSortingVector = (SimpleSortingVector)FutureContent.future.getContent(Constants.CONTESTANTS_DATA);
        Enumeration contestantsEnumeration = simpleSortingVector.elements();

        while(contestantsEnumeration.hasMoreElements()){
            final ContestantButtonField contestantButtonField = (ContestantButtonField)contestantsEnumeration.nextElement();
            if(contestantButtonField.getContestant().getId().equalsIgnoreCase(this.id)){
                contestantToSave = contestantButtonField.getContestant();
            }
        }   
    }

    public void persistContestant(){

        contestantsStore.setContents(contestantToSave); 
        contestantsStore.commit();

    }
}


206
1
задан 18 ноября 2011 в 12:11 Источник Поделиться
Комментарии
1 ответ

Нет никаких супер-дизайн-шаблон, который будет выгодно здесь, но вы можете определенно извлечь выгоду из некоторых основных понятий ОО, как инкапсуляция и единая ответственность.

Для начала, а не делать кучу служебных методов, лучше дизайн, чтобы каждый класс статический метод, как:

// inside the ContestantObj class
public static ContestantObj fromID(string ID) {
// code to retrieve ContestantObj
}

Таким образом, каждый класс отвечает за создание себя, что это должно быть (кроме случаев, когда требуется строитель или абстрактная фабрика).

Ваш UpdateContestantObj конструктор должен принимать в ContestantObj. Он не должен заботиться о том, как ContestantObj создается. Должна быть машина, которая принимает в Участники и результаты конкурса, которые были обновлены в "участник апдейтера".

Кроме того, именования из ContestantObj нужно просто быть участником. Мы знаем, что это объект.

3
ответ дан 18 ноября 2011 в 01:11 Источник Поделиться