编辑: 星野哀 | 2019-07-15 |
如果不想让应用程序的源代码使用它,可以将其定义为 private.某些 JDO 实现可 以替你产生一个默认的构造函数, 不过此功能会视产品的类型而异, 而且是无法移植的. 例1-2提供 Actor 类的源代码.在此展示用的范例中,所有的演员都有可辨识他们的唯 一的名字 (这可以是与本名不同的艺名) . 因此, 我们用一个String来表示演员的名字. 每位演员可以扮演一个以上的角色,而roles 成员则描述于 Actor端Actor与Role之 间的关系.在行 ? 的批注只是提供说明,在JDO 中没有任何功能上的用途.行?及行 ? 的addRole()与removeRole()方法则用来为应用程序维护 Actor 实例与其相关的 Role 实例间的关系. 例1-2:Actor.java package com.mediamania.prototype;
import java.util.Set;
import java.util.HashSet;
import java.util.Collections;
public class Actor { private String name;
private Set roles;
// 数据类型:Role private Actor() {} public Actor(String name) { this.name = name;
roles = new HashSet();
} public String getName() { return name;
} public void addRole(Role role) { roles.add(role);
} public void removeRole(Role role) { roles.remove(role);
? ? ?
第一章
14 6 } public Set getRoles() { return Collections.unmodifiableSet(roles);
} } 最后,例1-3 列出了 Role 类的源代码.此类为 Movie与Actor间的关系的对象模型,并 包括在影片中由该演员所扮演的特定角色的名称. Role 构造函数会初始化指向Movie 与Actor 的引用,并且借着调用在 Movie 及Actor 类中都有定义的 addRole()更新 此关系中的另一端. 例1-3:Role.java package com.mediamania.prototype;
public class Role { private String name;
private Actor actor;
private Movie movie;
private Role() {} public Role(String name, Actor actor, Movie movie) { this.name = name;
this.actor = actor;
this.movie = movie;
actor.addRole(this);
movie.addRole(this);
} public String getName() { return name;
} public Actor getActor() { return actor;
} public Movie getMovie() { return mov........