WEB开发网
开发学院软件开发Java 面向 Java 开发人员的 db4o 指南: 超越简单对象 阅读

面向 Java 开发人员的 db4o 指南: 超越简单对象

 2010-04-01 00:00:00 来源:WEB开发网   
核心提示: OODBMS 系统中的 String您可能还记得,在我此前的文章示例中,面向 Java 开发人员的 db4o 指南: 超越简单对象(2),Person 类型使用 String 作为字段,在 Java 和 .NET 里,并在构造函数里添加一个 equals() 方法,在清单 2 中,String

OODBMS 系统中的 String
您可能还记得,在我此前的文章示例中,Person 类型使用 String 作为字段。在 Java 和 .NET 里,String 是一种对象类型,从 Object 继承而来,这似乎有些矛盾。事实上,包括 db4o 在内的绝大多数 OODBMS 系统在对待 String 上与其他对象都有不同,尤其针对 String 的不可变(immutable)特性。

这个简单的 Person 类在用于介绍基本 db4o 存储、查询和检索数据操作时行之有效,但它无法满足真实世界中企业编程的复杂性。举例而言,数据库中的 Person 有家庭地址是很正常的。有些情况下,还可能需要配偶以及子女。

若要在数据库里加一个 “Spouse” 字段,这意味着要扩展 Person,使它能够引用 Spouse 对象。假设按照某些业务规则,还需要添加一个 Gender 枚举类型及其对应的修改方法,并在构造函数里添加一个 equals() 方法。在清单 2 中,Person 类型有了配偶字段和对应的 get/set 方法对,此时还附带了某些业务规则:

清单 2. 这个人到了结婚年龄吗?

package com.tedneward.model; 
public class Person { 
  // . . . 
 
  public Person getSpouse() { return spouse; } 
  public void setSpouse(Person value) { 
    // A few business rules 
    if (spouse != null) 
      throw new IllegalArgumentException("Already married!"); 
     
    if (value.getSpouse() != null && value.getSpouse() != this) 
      throw new IllegalArgumentException("Already married!"); 
       
    spouse = value; 
     
    // Highly sexist business rule 
    if (gender == Gender.FEMALE) 
      this.setLastName(value.getLastName()); 
 
    // Make marriage reflexive, if it's not already set that way 
    if (value.getSpouse() != this) 
      value.setSpouse(this); 
  } 
   
  private Person spouse;   
} 

上一页  1 2 3 4 5 6 7  下一页

Tags:面向 Java 开发

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接