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


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

Слайд 0

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


Слайд 1

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


Слайд 2

Пример


Слайд 3


Слайд 4

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


Слайд 5

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


Слайд 6

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


Слайд 7

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


Слайд 8

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


×

HTML:





Ссылка: