不变模式 , 行为型模式一种 ,系统使用某个对象的过程中 , 需要创建数量较多的同类对象 , 同时大量对象中还普遍存在状态相同的情况 , 此时就需要简化对象状态 , 使相同状态的对象的量减少 , 降低资源的消耗 。
不变模式 , 行为型模式一种 .
系统使用某个对象的过程中 , 需要创建数量较多的同类对象 , 同时大量对象中还普遍存在状态相同的情况 , 此时就需要简化对象状态 , 使相同状态的对象的量减少 , 降低资源的消耗 .不变模式可以达到这样的要求 , 当一个对象创建之后 , 内部状态在整个类生命周期都不会发生变化 , 如果变化则需要创建新类来完成 .不变模式分为弱不变模式和强不变模式
弱不变模式 , 某个类对象状态不可以变化 , 但是其子类对象的状态可以变化 .
强不变模式 , 某个类对象状态不可以变化 , 同时其子类对象的状态也不能进行变化 .
不变模式一般只有一个不变类组成 , 如果讨论不变模式种类需要增加子类来完成 .
1. 不变类中没有方法修改对象的状态 .
2. 不变类中所有属性都为私有 .
3. 不变类中引用的其他对象 , 必须设置外界访问的权限 . 以上条件满足达到弱不变模式 .
4. 不变类中所有方法都应该为final (针对java语言) , 也就是子类不能置换掉的方法 .
5. 不变类本身就是final (针对java语言) , 也就是不变类不能被继承 , 不会有子类存在 . 以上五条件满足达到强不变模式 .
1. 不变类子类对象可以修改状态 , 也就是不变类子类可以不为不变类 .
2. 不变类子类可以修改父类的状态 , 从而不变类对象变为可变对象 .
优点 : 不变对象比可变对象更加容易维护 .
不变对象是线程安全的 .
缺点 : 需要修改状态时 , 就需要通过创建新对象来完成 .