A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

Immutable pattern
              (我是安全的,不会变,大胆拿去用吧)
immutable意味不可改变的。了解Immutable 设计模式,其实就是了解Immutable类什么是immutable类呢?Immutable类其实是个绝对安全的类,无论多少个线程对他进行访问,他的成员变量值都是不会改变的,所以了解immutable类就成为了理解immutable的关键。
下面的代码描述了一个简单的immutable类
public final class ImmutablePerson {
    private final String name;
    private final String address;
    public ImmutablePerson(String name, String address) {
        this.name = name;
        this.address = address;
    }
    public ImmutablePerson(MutablePerson person) {
        this.name = person.getName();
        this.address = person.getAddress();
    }
    public MutablePerson getMutablePerson() {
        return new MutablePerson(this);
    }
    public String getName() {
        return name;
    }
    public String getAddress() {
        return address;
    }
Immutable类,没有任何方式能对类的对象进行修改,所以不需要同步锁。Immutable类本身就是线程安全的。
虽然用final修饰immutable类不是必要的,但是可以防止被子类继承,从而进行修改。
Immutable类中 变量都用private final修饰,private表示只能有类内部进行访问
如果一个类中如果含有一个mutable类,想让这个类成为immutable类,就必须在构造方法的时候,不能把对象直接穿进去,而是利用传入对象的参数,再构造器中new一个mutable类的实例,这样就能保证这个类的成员不用因为,构造器中传入对象的改变而改变,而使之成为一个immutable类

2 个回复

倒序浏览
写的这么详细,学习到了!!!
回复 使用道具 举报
讲的很详细,很专业
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马