Engineering Note

[OOP] DIP(의존성 역전 원칙) 본문

Computer Science/OOP & Design Pattern

[OOP] DIP(의존성 역전 원칙)

Software Engineer Kim 2025. 10. 17. 18:41

DIP(Dependency Injection Principle)

: 의존성 역전 원칙은 객체지향 소프트웨어 설계원칙인 SOLID 원칙 중 하나로, 어떤 모듈이 다른 모듈에 의존해야할 때 구체화(구현)가 아니라 추상화(인터페이스)에 의존하도록 설계하는 원칙(추상클래스나 인터페이스에 의존하도록 설계)

 

 

 

DIP의 구현 방법

: 의존성 역전 원칙을 구현하는 방법에는 인터페이스나 추상 클래스를 사용하여, 구현 세부 사항에 대한 의존성 대신 추상화에 의존하도록 할 수 있습니다.

 

 

public interface DataRepository{
 void save(Object object);
}

public class FileDataRepository implements DataRepository{
 public void save(Object object){
  //데이터 파일 시스템 저장
 }
}


public class HighLevelModule{
 private final DataRepository dataRepository;
 
 public HighLevelModule(DataRepository dataRepository){
  this.DataRepository = dataRepository;
 }
 
 public void actionPerfom(Object object){
  dataRepository.save(object);
 }
}

 

위 예시 코드는 HighLevelModule은 DataRepository 인터페이스에 의존하며, 이는 FileDataRepository에 의해 구현됩니다. 이러한 방식은 HighLevelModule이 데이터 저장 방식의 세부 사항에 대해 알 필요가 없게 하며, 이는 유지보수성과 확장성을 향상시킵니다. file시스템에 데이터를 저장하는 방식이 아니라 database에 데이터를 저장하는 방식으로 변경되어도, HighLevelModule은 코드를 변경할 필요가 없이 기능을 변경 또는 추가할 수 있습니다.

 

 

 

정리

DIP는 소프트웨어 설계의 중요한 원칙 중 하나입니다. 이 원칙은 시스템의 유지보수성, 확장성, 그리고 유연성을 향상시키는 데 중요한 역할을 합니다.

DIP를 구현하는 방법에는 인터페이스나 추상 클래스를 사용하는 것이 포함되며, 이를 통해 개발자는 이를 통해 개발자는 시스템의 각 부분을 독립적으로 개발하고 테스트 할 수 있습니다.

 

 

 

참고 자료 : https://f-lab.kr/insight/dependency-inversion-principle?gad_source=1&gad_campaignid=22368870602&gbraid=0AAAAACGgUFfKscmOpc71pU4cspoXPxLxt&gclid=CjwKCAjw0sfHBhB6EiwAQtv5qTx8m3KO_NL97sahChIdmJSelnPzxDA0fbEfOIZTs-O6acwjp6rdshoCxPgQAvD_BwE

 

의존성 역전 원칙(DIP)과 그 구현 방법

의존성 역전 원칙(DIP)의 기본 개념, 구현 방법, 그리고 이 원칙이 소프트웨어 설계에 제공하는 장점에 대해 설명합니다.

f-lab.kr

 

https://inpa.tistory.com/entry/OOP-💠-아주-쉽게-이해하는-DIP-의존-역전-원칙

Comments