Pull to refresh

Comments 24

не понятно с final. Почему это эквивалентно? Что нам мешает наследоваться и не использовать конструктор?:)
прочитайте последнее предложение ;)
И чем это лучше, чем сделать final abstract class UtilityClass?
final abstract для класса не возможно сделать ;)
тем, что нельзя классу быть одновременно final abstract,
в прочем делать такие классы — это странное желание на мой вкус,
а вот описанный паттерн (финальный класс+приватный конструктор) — вполне имеет право на существование
IMHO: Насколько я помню определение паттерна (по GoF), данный подход вряд ли можно назвать паттерном.
Это не паттерн, это идиома. Паттерн — более высокий уровень абстракции, он не привязан к языку.
final избыточно, если есть все конструкторы приватные.
еще в Вашем варианте можно будет создать экземпляр класса через конструктор по умолчанию, который добавит компилятор
в каком моем варианте? я в ваш говорю добавить надо слово final, что оптимальнее, нагляднее для пользователя вашего класса.
UFO just landed and posted this here
У меня не дословный перевод, а мое понимание написанного (сравните с оригиналом при желании). Думаю, что людям будет приятно прочитать про подобные вещи на русском языке, поскольку не все владеют английским и не все знают про книгу Блоха.
UFO just landed and posted this here
Если данный материал Вам известен, то далеко не факт, что остальные тоже с ним знакомы.
Ну вообще говоря, я согласен с тем, Блох это книга по Java из серии — must have and read again and again.
Да, сам так делаю.
Правда, если задуматься — непонятно достоин ли этот мелкий момент внимания.
Всё равно у утилити-классе все методы статические и если кто-то захочет создать экземпляр подобного класса — да пожалуйста, какая разница. Но только никто не захочет потому что тупо незачем.
Многие начинающие программисты, которые еще слабо владеют предметом ООП, наследуют от утилитных классов (встречал при доработке кода в подобных проектах).
Да есть и пострашнее ошибки у начинающего программиста.
Эта-то совсем безобидная, багов не сделает.
С точки зрения удобочитаемости лучше помимо приватного конструктора объявлять класс final. Современные IDE по этому модификатору помечают класс специальной иконкой, что позволяет наглядно выделять подобные классы в списке. Также это является дополнительным документированием направления мыслей разработчика.
Кстати, если уж совсем копнуть вглубь, то в Java (по крайней мере в 1.5.* версиях Sun Hotspot) можно наследоваться от final класса в каком-то смысле ;).

www.wasm.ru/article.php?article=unsjav1
Disclaimer: все это не для того, чтобы использовать, а просто пример того, что в принципе удалять зубы через задний проход наследоваться от final-class иногда возможно.
мда. это ж надо умудриться на основе двух строк из замечательной книги Блоха написать целую статью, а потом еще устроить обсуждение. Браво!
Sign up to leave a comment.

Articles