对象之间的依赖关系和组装
对象之间的继承和拥有关系
Person, User, Account之间的关系.
判断继承关系, A作为一个B.
判断拥有关系, A拥有一个C.
User对象的定义, User类
/**
* a User as a Person. correct
* a User has a Person. wrong
* a User as an Account. wrong
* a User has an Account. correct
*/
public class User extends Person {
String UserID;
String password;
Account account;
//其它的属性和方法, 略.
}
Person对象的定义, 类Person
public class Person {
String personID;
String name;
String birthday;
//其它的属性和方法, 略.
}
Account对象的定义, 类Account
public class Account {
String accountID;
int balance;
//其它的属性和方法, 略.
}
对象之间的强构成关系
对象A一定有对象B. 由构造函数初始化组成部分(对象)。 整体和部分的对象相互依赖, 或者整体对象可以在后来去除对部分对象的依赖。
示例
类Head
public class Head{
String headID;
//其它的属性和方法, 略.
}
类Person中包含一个属性Head, 表示一个Head是一个Person的必要组成部分. 这样类Person对Head有强依赖关系.
public class Person{
String UserID;
Head head;
public Person() {
this.head = new Head();
}
public Person(String personID) {
this.personID = personID;
this.head = new Head();
}
public Person(String personID, Head head) {
this.personID = personID;
this.head = head;
}
//其它的属性和方法, 略.
}
对象之间的弱构成关系
对象A可以有对象B. 一个对象由另一个对象的setter函数或者其它函数注入。
一个User可以由一个Account, 也可以没有Account, 也可以随时更换Account.
public class User {
String UserID;
String password;
Account account;
public void setAccount(Account account) {
this.account = account;
}
//其它的属性和方法, 略.
}
类之间的方法参数依赖
一个类作为另一个类的方法的参数或者返回值的类型。
示例
AccountManager 对Account的依赖. AccountManager的方法findAccountByAccountID()的返回值是Account类型的对象.
public class AccountManager {
public Account findAccountByAccountID(String accountID) {
for (int i = 0; i < accounts.length; i++) {
if (accounts[i].getAccountID().equals(accountID)) {
return accounts[i];
}
}
return null;
}
//其它的属性和方法, 略.
}