设计模式学习笔记(6)——不变模式

版权声明:本文为博主原创,未经博主允许不得转载。 https://blog.csdn.net/weixin_36904568/article/details/90138952

1. 定义

一个对象的状态在对象被创建之后就不再变化,允许多个对象共享某一个对象,降低了对该对象进行并发访问时的同步化开销

2. 分类

  • 弱不变模式:一个类的实例的状态不会改变,但是子类的实例具有可能会变化的状态
    • 没有任何方法会修改对象的状态
    • 所有属性是私有的
    • 这个对象所引用到的其他对象如果是可变对象的话,必须设法限制外界对这些可变对象的访问
      • 在不变对象内部初始化被引用的对象
      • 在客户端初始化被引用的对象,在不变对象初始化中使用可变对象的拷贝
  • 强不变模式:一个类和其子类的实例的状态不会改变
    • 满足弱不变模式所要求的所有条件
    • 类所有的方法无法被覆盖
    • 类本身无法被继承

3. 特点

  • 更加容易维护
  • 线程安全
  • 一旦需要修改一个不变对象的状态,就只好创建一个新的同类对象,造成资源浪费

猜你喜欢

转载自blog.csdn.net/weixin_36904568/article/details/90138952