Skip to content

Dependency Inversion Principle

  • 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();
    }
}