设计模式

来源:互联网 发布:linux 调用远程脚本 编辑:程序博客网 时间:2024/06/10 04:33


不可变的对象有很多好处,像我们最熟悉的String对象就是一个不可变的对象,这篇文章主要讲解怎么创建我们自己的不可变对象。对于不可变对象的好处,这里不做详细解释。


Java要创建不可变的对象需要满足下面几个条件:

1. 这个类被声明成final,不可以被继承,也不可以重载它的方法

2. 这个类的成员变量都是final并且是私有的

3.  如果成员变量是一个引用类型,是可变的,那么在他的getter()方法中,返回的是对该对象的拷贝,这里作一个简单的解释,为什么成员变量是final的,引用对象还需要取的时候Copy了,因为final只能保证引用不变,但不能保证引用对象本身不变。


看下面的代码,一个简单的不可变类,创建的对象就是不可变对象,其中特别注意Date对象,是一个引用对象,如果GetBoB方法中不做copy,那么我们得到这个对象的引用后就可以改变这个Date的值了,虽然引用并没有改变。

public final class BrokenPerson{private final String firstName;private final String lastName;private final Date dob;public BrokenPerson( String firstName,  String lastName, Date dob){this.firstName = firstName;this.lastName = lastName;this.dob = dob;}public String getFirstName(){return this.firstName;}public String getLastName(){return this.lastName;}public Date getDOB(){return new Date( this.dob.getTime() );}}




原创粉丝点击