Joshua Bloch

Effective Java TM

Сообщить о появлении
Загрузите файл EPUB или FB2 на Букмейт — и начинайте читать книгу бесплатно. Как загрузить книгу?
  • Oksana Skorniakovaцитирует6 лет назад
    или что один интерфейс является
    расширением другого (extend) для описания' уровня доступа
  • Oksana Skorniakovaцитирует6 лет назад
    Существует, однако, простая идиома, гарантирующая отсутствие
    экземпляров. Конструктор по умолчанию создается только тогда, когда у класса нет явных
    конструкторов, и потому запретить создание экземпляров можно, поместив в класс единственный
    явный закрытый конструктор
  • Oksana Skorniakovaцитирует6 лет назад
    Таким образом, если вы абсолютно уверены, что данный класс навсегда останется синглтоном,
    имеет смысл использовать первый вариант. Если же вы хотите отложить решение по этому вопросу,
  • Oksana Skorniakovaцитирует6 лет назад
    Статический метод генерации для
    синглтона возвращает единственный экземпляр этого класса, однако это можно легко изменить и
    возвращать, скажем, свой уникальный экземпляр для каждого, потока, обращающегося к этому методу.
  • Oksana Skorniakovaцитирует6 лет назад
    В случае с синглтоном этот метод возвращает единственный экземпляр данного класса.
  • Oksana Skorniakovaцитирует6 лет назад
    Эти соглашения продолжают
    совершенствоваться, но два названия статических методов генерации стали уже общепринятыми:
    • valueOf' - возвращает экземпляр, который имеет то же значение,
    что и его параметры. Статические методы генерации с таким названием фактически
    являются операторами преобразования типов.
    • getlnstance - возвращает экземпляр, который описан параметрами, однако говорить о том,
    что он будет иметь то же значение, нельзя.
  • Oksana Skorniakovaцитирует6 лет назад
    Второй недостаток статических методов генерации состоит в том, что их трудно отличить от
    других статических методов. В документации АРI они не выделяются так, как это делается для
    конструкторов.
  • Oksana Skorniakovaцитирует6 лет назад
    Например, в архитектуре Col ections Framework невозможно создать подкласс ни для одного
    из классов реализации. Сомнительно, что в такой маскировке может быть благо, поскольку поощряет
    программистов использовать не наследование, а композицию (статья 14).
  • Oksana Skorniakovaцитирует6 лет назад
    Основной недостаток статических методов генерации заключается в том, что классы, не
    имеющие открытых или защищенных конструкторов, не могут иметь подклассов. Это же касается
    классов, которые возвращаются открытыми статическими методами генерации, но сами открытыми не
    являются
  • Oksana Skorniakovaцитирует6 лет назад
    На это есть две причины. Во-первых, это позволяет
    гарантировать, что некий класс является синглтоном (статья 2). Во-вторых, это дает возможность
    убедиться в том, что у неизменяемого класса не появилось двух одинаковых экземпляров: a.equals(b)
    тогда и только тогда, когда а==Ь. Если класс предоставляет' такую гарантию, его клиенты могут
    использовать оператор == вместо метода equals(Object), что приводит к существенному повышению
    производительности программы. Подобную оптимизацию реализует шаблон перечисления типов,
fb2epub
Перетащите файлы сюда, не более 5 за один раз