外观
外观
358字约1分钟
2025-02-08
不可变类指的是再创建后其状态(字段)不再发生改变,一旦对象被创建,它的所有属性不能发生改变,类的实例在整个生命周期保持不变。
1、声明类为final,避免被子类继承;
2、字段被 private、final 修饰,确保创建后不再发生改变;
3、通过构造函数初始化所有字段
4、不存在改变对象属性的方法,如:setter
5、如果类包含可变对象的引用,确保这些引用在对象的外部不被修改,例如:getter 返回对象的副本(new 一个对象)来保护可变对象。
1、线程安全:由于不可变对对象的状态不可改变,其天生就是线程安全的,并发环境无需同步;
2、缓存友好:不可变对象可以安全的被缓存和共享,如 String 的字符串常量池;
3、防止状态不一致:不可变类可以有效避免因修改对象而导致对象状态不一致的问题。
性能问题:不可变对象在状态改变时都会创建新对象,这会导致性能开销,尤其是在大规模对象或频繁修改的场景。