§15 Минимизируйте mutability. Признаки immunable класса Не создавайте методов, способных изменить состояние объекта (mutators) Убедитесь, что от класса.

Презентация:



Advertisements
Похожие презентации
§11 Переопределяйте clone() избирательно. interface Cloneable –Особенность Object.clone() –Уникальность интерфейса.
Advertisements

Принципы объектно-ориентированного программирования Объектная модель Наследование Инкапсуляция Полиморфизм.
§17 Проектируйте и документируйте наследование или запрещайте его.
Лекция 3 Принципы объектно- ориентированного программирования.
1 © Luxoft Training 2012 Java: расширенные вопросы Модуль #8.
Java. Part 2. Спецификаторы доступа public private protected не указан – доступ в пределах пакета Могут использоваться перед классами, методами, полями.
§67 Избегайте излишней синхронизации. Для того, чтобы избежать падений и проблем с безопасностью, никогда не передавайте управление клиенту в synchronized.
1 Java 6. ИНТЕРФЕЙСЫ И ВНУТРЕННИЕ КЛАССЫ. 2 Интерфейсы Не являются классами Ни один из объявленных методов не может быть реализован внутри интерфейса.
Синтаксис языка Java. Символы и синтаксис Перевод строчки эквивалентен пробелу Регистр в именах различается.
Лекция 10 ОбъектыЛекция 10 ОбъектыООП Инкапсуляция Возможность совместного хранения данных и кода для их обработки Наследование Возможность расширять существующие.
Кафедра ЮНЕСКО по НИТ Объектная модель в Java Часть 2. Интерфейсы и внутренние классы, параметры метода.
Особенности Java. Блок static static { } Создание и уничтожение объектов new – создание объекта finalyze()
Дружественные функции Дружественные функции – это функции, объявленные вне класса, но имеющие доступ к закрытым и защищенным полям данного класса Дружественная.
Реализация распараллеливания программного комплекса расчета двумерных задач газовой динамики с помощью системы OST Научный руководитель: Илюшин А. И. Колмаков.
Кафедра ОСУ, Java 2004 Слайд 1 Наследование Наследование позволяет использовать существующий класс для определения новых классов, т.е. способствует.
Сложение и вычитание дробей. Дроби это обычные числа, их тоже можно складывать и вычитать. Но из-за того, что в них присутствует знаменатель, здесь требуются.
Аналитико- проектировочная компетентность руководителей.
СУБД Microsoft Access 2003 Элементы языка SQL. Язык SQL SQL (Structured Query Language) – структурированный язык запросов Язык SQL применяется во многих.
Семейная жизнь - хорошо это или плохо? Перед тем, как создать семью многие люди задаются вопросом - надо ли им это, что они потеряют и приобретут в семейной.
Один из законов питания гласит – для рационального, здорового питания необходимо соблюдение баланса энергии. Один из законов питания гласит – для рационального,
Транксрипт:

§15 Минимизируйте mutability

Признаки immunable класса Не создавайте методов, способных изменить состояние объекта (mutators) Убедитесь, что от класса нельзя отнаследоваться. Делайте все поля final Делайте все поля private Убеждайтесь в эксклюзивности доступа ко всем mutable полям

Пример

Immunable объекты просты Immunable объекты потомственно thread-safe, не требуют синхронизации Также, они могут свободно share Не следует имплементировать clone() или конструктор копирования в таких объектах. Не только вы можете share immunable объекты. Вы можете share их внутренние поля. Immunable объекты очень удобны при создании других объектов

Единственный недостаток immunable объектов, это то, что для каждого нового значения вам необходим новый экземпляр. –BitSet vs BigInteger и метод flipBit() Поэтому существуют mutable компаньоны (String и StringBuilder)

Иной подход: Это позволяет расширять так:

Не всегда понимают что immunable класс должен быть final, и это может привести к плохим последствиям Поэтому: Классы следует создавать immutable до тех пор пока у вас нет веских причин сделать наоборот.

Если класс не может быть immutable, ограничьте его изменяемость как только это возможно Делайте каждое поле final, пока нет достаточной причины сделать не так. Пример: TimerTask, java.util.Date, java.awt.Point