Возьмите этот класс скелет, что кто-то хочет, чтобы заполнить, чтобы получать RSS потоки на ряд веб-сайтов:Логика проверки ценности внутри или вне класса?
public class RSSStream extends Thread {
public RSSStream(String rssStreamName,String rssURL,int refreshTime){
// constructor code goes here
}
}
Теперь давайте рассмотрим, что RefreshTime должен быть выше нуля, и что rssURL должен быть действительным HTTP адрес.
Очевидный рефлекс должен иметь логику проверки значения внутри конструктора. Однако вызов конструктора создает экземпляр объекта независимо от того, что происходит. Это означает, что объект оказывается бесполезным, если значения не позволяют ему выполнять свою работу. Это также означает, что объект должен быть в конечном итоге сбрасываться или повторно использоваться.
Итак, вот несколько вопросов по этой теме:
- Почему некоторые классы накладывают метод GetInstance(), связанный с тем, что, вероятно, является частным конструктор? Если я хорошо помню, примером может служить GregorianCalendar.
- В каких случаях вы бы использовали такой же подход?
- В большинстве случаев у вас есть логика проверки в вашем конструкторе?
- Если да, примените ли вы это или нет к классам класса Entity, которые используются в контексте персистенции модели домена?
Все ваши ответы приветствуются. Будет интересно получить четкое представление о наиболее распространенной практике.
Почему бы не выбрасывать исключение в конструкторе? –