黑马程序员技术交流社区

标题: 多线程设计模式之immutable设计模式 [打印本页]

作者: 程梦真    时间: 2015-4-26 00:18
标题: 多线程设计模式之immutable设计模式
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类


作者: 魔蝎座    时间: 2015-4-26 00:23
写的这么详细,学习到了!!!
作者: 珠宝    时间: 2015-4-26 00:34
讲的很详细,很专业




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2