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


The Presentation inside:

Slide 0

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


Slide 1

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


Slide 2

Пример


Slide 3


Slide 4

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


Slide 5

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


Slide 6

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


Slide 7

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


Slide 8

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


×

HTML:





Ссылка: