设计模式基础5--不变对象

1)使用场景:牵涉到对数据对象进行修改时,可能由于修改的顺序而造成数据的错乱,此时使用不变对象就可以避免,而且还可以不使用高开销的synchronizing方法。一个数据模型类的实例所持有的数据在整个生命周期中都不变,这个类就会是线程安全。

 

2)设计方法:

a)所有的实例变量都必须在构造函数中设置,因为构造函数是线程安全的。

b)将这个类设置为final,防止类由于继承而产生的类方法的覆盖。

c)所有的实例变量都必须设置为final,确保只在构造函数中一次设置。

d)若实例变量中包含有指向其他对象的引用,那么其对应的getter方法应该返回这个对象的拷贝。

 

3)实例:

 

public final class EmployeeModel { // State private final String firstName; private final String lastName; private final String SSN; private final String address; private final Car car; // Constructor public EmployeeModel(String fn, String ln, String ssn, String addr, Car c) { firstName = fn; lastName = ln; SSN = ssn; address = addr; car = c; } // Getters public String getFirstName() { return firstName; } public String getLastName() { return lastName; } public String getSSN() { return SSN; } public Car getCar() { // return a copy of the car object return (Car) car.clone(); } public String getAddress() { return address; } }

你可能感兴趣的:(设计模式,c,String,Class,getter)