zoukankan      html  css  js  c++  java
  • 【面向对象设计基础】不变对象

    作者:gnuhpc
    出处:http://www.cnblogs.com/gnuhpc/

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

    2)设计方法:

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

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

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

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

     

    3)实例:

    image

    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;
        }
    }

    作者:gnuhpc
    出处:http://www.cnblogs.com/gnuhpc/

  • 相关阅读:
    1.1.24 制作红头文件
    1.1.23 文档页末空白行删不掉
    kernel enable specific directory DEBUG
    kernel lcd blank interface
    git show (15)
    git log (14)
    Android bootchart (一)
    kernel parameter [nosmp | maxcpus=0]
    kernel get clock info
    kernel bootargs consoleblank
  • 原文地址:https://www.cnblogs.com/gnuhpc/p/2822393.html
Copyright © 2011-2022 走看看