(1)一个对象被创建之后就不再改变。
2. 优点(1)因为不能修改对象的状态,因此不变对象比可变对象更加容易维护。
(2)因为不能修改对象的状态,因此不变对象是线程安全的。
3. 缺点(1)因为不能修改对象的状态,因此如果不得不改变对象,只好创建一个新对象。
4. 代码架构(1)弱不变模式:类的实例都不可改变。子类的实例可以改变。
- 所有的属性都应当是私有的。
- 引用到的其它对象如果是可变的,应当在不变对象内部初始化。
- (接上)如果只能在外部初始化,再传入时,“克隆”一份新的。
- 满足所有弱不变的模式。
- 所有的方法都是final的(子类无法置换)。
- 类本身是final的(不可能有子类)
(1)String。
(2)封装类:Long、Integer......。
6. “不变(Immutable)”与"只读(Read Only)"的区别“不变”即不发生改变,“只读”可能发生改变(因为其它变量的改变而改变)。
比如一个人的生日是“不变”的,一个人的年龄是“只读”的,生日一旦“创建”就不可改变,年龄则一年年变化,但是”只读“的。
参考文献:
1. 《设计模式》 板桥里人
2. 《Java与模式》 阎宏
没有评论:
发表评论