版权声明:本文为博主原创,未经博主允许不得转载。 https://blog.csdn.net/weixin_36904568/article/details/90138952
1. 定义
一个对象的状态在对象被创建之后就不再变化,允许多个对象共享某一个对象,降低了对该对象进行并发访问时的同步化开销
2. 分类
- 弱不变模式:一个类的实例的状态不会改变,但是子类的实例具有可能会变化的状态
- 没有任何方法会修改对象的状态
- 所有属性是私有的
- 这个对象所引用到的其他对象如果是可变对象的话,必须设法限制外界对这些可变对象的访问
- 在不变对象内部初始化被引用的对象
- 在客户端初始化被引用的对象,在不变对象初始化中使用可变对象的拷贝
- 强不变模式:一个类和其子类的实例的状态不会改变
- 满足弱不变模式所要求的所有条件
- 类所有的方法无法被覆盖
- 类本身无法被继承
3. 特点
- 更加容易维护
- 线程安全
- 一旦需要修改一个不变对象的状态,就只好创建一个新的同类对象,造成资源浪费