Java中,對(duì)象之間通常會(huì)存在組合和注入的關(guān)系。組合是指一個(gè)對(duì)象包含另一個(gè)對(duì)象,而注入則是指一個(gè)對(duì)象依賴于另一個(gè)對(duì)象。
在組合中,一個(gè)類可以包含一些成員變量,這些成員變量也可以是其他類的實(shí)例。例如:
public class Person {
private String name;
private Address address;
// 構(gòu)造方法、getters和setters等省略
// 其他方法
}
public class Address {
private String province;
private String city;
private String street;
// 構(gòu)造方法、getters和setters等省略
// 其他方法
}
在上面的代碼中,Person類包含一個(gè)Address類的實(shí)例作為成員變量,這就是組合關(guān)系。可以通過Person對(duì)象的getAddress()方法來獲取其對(duì)應(yīng)的Address對(duì)象。
在注入中,一個(gè)類需要依賴于另一個(gè)類的實(shí)例來完成某些任務(wù)。例如:
public class UserService {
private UserDao userDao;
public UserService(UserDao userDao) {
this.userDao = userDao;
}
// 其他方法
}
public interface UserDao {
void save(User user);
void deleteById(Long id);
// 其他方法
}
public class UserDaoImpl implements UserDao {
public void save(User user) {
// 實(shí)現(xiàn)保存用戶信息的邏輯
}
public void deleteById(Long id) {
// 實(shí)現(xiàn)根據(jù)ID刪除用戶信息的邏輯
}
// 其他方法
}
在上面的代碼中,UserService類需要依賴于UserDao類的實(shí)例,以完成與數(shù)據(jù)庫(kù)相關(guān)的數(shù)據(jù)操作。UserService的構(gòu)造函數(shù)注入了一個(gè)UserDao對(duì)象,所以可以在其方法中使用userDao來調(diào)用實(shí)現(xiàn)了UserDao接口的具體類 UserDaoImpl 的方法。
上一篇$_env php