Immutable Class

Проработать

  1. Неизменное в Java: final, константы и Immutable

Что это

Immutable Class - класс который невозможно изменить после инициализации. Все Immutable сlass являются потокобезопасными(thread-safe) и не требуют синхронизации.

Как создать:

  1. Не создавать 'Setters'.
  2. Для 'Getters' mutable полей - необходимо возвращать копии объектов.
  3. Инициализируйте все поля через конструктор, выполняя глубокое клонирование.
  4. Все поля private, final.
  5. Не позволять наследникам переопределять методы, тк можно помещать наследников в переменные родителей. Простой способ - объявить class как final. Более сложный способ сделать приватный конструктор и использовать factory method для создания.

JAVA core immutable classes:

Immutable collection

Collections.unmodifiableList(java.util.List|<? extends T>>)