【面向对象设计基础】不变对象

简介:

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/archive/2012/12/17/2822393.html,如需转载请自行联系原作者

相关文章
|
3天前
|
Serverless PHP
当谈论面向对象编程时,这四个概念是非常重要的。以下是对接口、继承、封装和多态的简要说明
本文介绍了面向对象编程的四个核心概念:接口、继承、封装和多态。接口定义对象的行为规范,类通过实现接口确保符合所需行为。继承允许在已有类基础上创建新类,实现代码重用。封装是将数据和操作捆绑并隐藏内部细节,提高安全性和可维护性。多态使对象在运行时能表现出不同行为,增加代码灵活性和可扩展性。文中还提供了代码示例来说明这些概念。
5 0
|
3月前
掌握面向对象程序设计继承和派生机制的概念
掌握面向对象程序设计继承和派生机制的概念
14 0
|
4月前
|
Java
Java面向对象编程,解释封装、继承和多态的概念。
Java面向对象编程,解释封装、继承和多态的概念。
39 2
|
7月前
|
设计模式 数据安全/隐私保护
面向对象编程基础:封装、继承、多态与抽象的全面解析
面向对象编程基础:封装、继承、多态与抽象的全面解析
30 0
|
9月前
面向对象基础-抽象
面向对象基础-抽象
36 0
|
9月前
|
编译器 C++
C++面向对象设计一个类需要注意的事情
C++代码千千万万,好的代码风格会让我们代码编写变得简洁高效,还会避免很多bug的出现,本期将讨论一个好的代码风格应该是怎样的。
|
10月前
|
设计模式 存储 安全
【Java设计模式 面向对象设计思想】一 再谈面向对象和封装、抽象、继承、多态四大特性
【Java设计模式 面向对象设计思想】一 再谈面向对象和封装、抽象、继承、多态四大特性
55 0
|
安全 Java 编译器
深挖⾯向对象编程三⼤特性 --封装、继承、多态
深挖⾯向对象编程三⼤特性 --封装、继承、多态
深挖⾯向对象编程三⼤特性 --封装、继承、多态
|
Java JavaScript 前端开发