Sobes.tech
Junior — Middle
63

Какие преимущества и недостатки есть у использования неизменяемых классов?

Answer from AI

sobes.tech AI

Неизменяемые классы (immutable classes) — это классы, объекты которых нельзя изменить после создания.

Преимущества:

  • Потокобезопасность: объекты можно безопасно использовать в многопоточной среде без синхронизации.
  • Простота понимания: состояние объекта фиксировано, что упрощает отладку и тестирование.
  • Использование в качестве ключей: неизменяемые объекты подходят для использования в хэш-таблицах и других коллекциях.
  • Предотвращение ошибок: исключается возможность случайного изменения состояния объекта.

Недостатки:

  • Производительность: при необходимости изменить объект приходится создавать новый, что может привести к дополнительным затратам памяти и времени.
  • Гибкость: сложнее реализовать объекты с изменяемым состоянием, например, кэш или счетчики.

Пример неизменяемого класса в Java:

public final class Person {
    private final String name;
    private final int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }
}