Java: Как я записал бы повторный выгодой попыткой блок?

Уменьшенный до существенного различия, идентификационные данные имеют значение для объектов, но не имеют значения для объектов значения. Например, чье-то Имя является объектом значения. Потребительский объект мог бы состоять из имени клиента (объект значения), List< Order> OrderHistory (Список объектов), и возможно Адрес по умолчанию (обычно объект значения). Потребительский Объект имел бы идентификатор, и каждый порядок будет иметь идентификатор, но Имя не должно; обычно, в объектной модели так или иначе, идентификационные данные Адреса, вероятно, не имеют значения.

объекты Значения могут обычно быть представлены как неизменные объекты; изменение одного свойства объекта значения по существу уничтожает старый объект и создает новый, потому что Вы не что касается с идентификационными данными как с содержанием. Правильно, Равняется методу экземпляра для Имени, возвратил бы "true", пока свойства объекта идентичны свойствам другого экземпляра.

Однако изменение некоторого атрибута объекта как Клиент не уничтожает клиента; Потребительский объект обычно изменяем. Идентификационные данные остаются тем же (по крайней мере, как только объект был сохранен).

Вы, вероятно, создаете объекты значения, не понимая его; каждый раз, когда Вы представляете некоторый аспект Объекта путем создания мелкомодульного класса, у Вас есть объект значения. Например, класс IPAddress, который имеет некоторые ограничения на допустимые значения, но состоит из более простых типов данных, был бы объектом значения. EmailAddress мог быть строкой, или это мог быть объект значения со своим собственным набором поведений.

довольно возможно, что даже объекты, которые имеют идентификационные данные в Вашей базе данных, не имеют идентификационных данных в Вашей объектной модели. Но самый простой случай является составным объектом некоторых атрибутов, которые имеют смысл вместе. Вы, вероятно, не хотите иметь Клиента. FirstName, Клиент. LastName, Клиент. MiddleInitial и Клиент. Заголовок, когда можно составить тех вместе как Клиента. Имя; они, вероятно, будут несколькими полями в Вашей базе данных к тому времени, когда Вы думаете о персистентности, но Ваша объектная модель не заботится.

16
задан oxbow_lakes 14 November 2009 в 13:23
поделиться

3 ответа

Легенда - ваш ответ можно улучшить; потому что если вы потерпите неудачу numTries раз, вы проглатываете исключение. Намного лучше:

while (true) {
  try {
    //
    break;
  } catch (Exception e ) {
    if (--numTries == 0) throw e;
  }
}
28
ответ дан 30 November 2019 в 16:50
поделиться

Я видел несколько подходов, но использую следующие:

int numtries = 3;
while(numtries-- != 0)
   try {
        ...
        break;
   } catch(Exception e) {
        continue;
   }
}

Это может быть не лучший подход. Если у вас есть другие предложения, поместите их здесь.

EDIT: Oxbow_lakes предложил лучший подход. Пожалуйста, взгляните на это ...

5
ответ дан 30 November 2019 в 16:50
поделиться

, если вы уже используете Spring, вы можете создать аспект для этого поведения, поскольку это сквозная проблема, и все, что вам нужно создать, это точечный разрез который соответствует всем вашим методам, которым нужна функциональность. см. http://static.springsource.org/spring/docs/2.5.x/reference/aop.html#aop-ataspectj-example

2
ответ дан 30 November 2019 в 16:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: