Sınıflar arasındaki bağımlılıkların azaltılması ve bu bağımlılıkların "interface"ler ile sağlanması gerekmektedir. Bu sayede yüksek seviyeli modüller düşük seviyeli modüllere bağımlı olmayacaktır.
Hatalı Örnek
class CustomerDAO{
}
class CustomerManager{
//Data access katmanında meydana gelen herhangi bir değişiklik Manager sınıfımıza da etki edecektir.
CustomarDAO customerDAO;❌
void addCustomer(){
customerDAO.add();
}
void removeCustomer(){
customerDAO.remove();
}
void updateCustomer(){
customerDAO.update();
}
}
Düzeltilmiş Örnek
interface CustomerDAO{
}
class CustomerDAOImpl implements CustomerDAO{
}
class CustomerManager{
CustomarDAO customerDAO;✅//Alt sınıfa bağımlılık interface yardımıyla ortadan kalktı
void addCustomer(){
customerDAO.add();
}
void removeCustomer(){
customerDAO.remove();
}
void updateCustomer(){
customerDAO.update();
}
}