일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 이스케이프 문자
- Graph
- Stack
- list 컬렉션
- s
- JSON
- insertion sort
- 윤성우 열혈자료구조
- Serialization
- C 언어 코딩 도장
- 알기쉬운 알고리즘
- Algorithm
- buffer
- datastructure
- C programming
- 메모리구조
- 이것이 자바다
- 윤성우의 열혈 자료구조
- stream
- Selection Sorting
- 혼자 공부하는 C언어
- R
- coding test
- Today
- Total
Engineering Note
[OOP] DIP(의존성 역전 원칙) 본문
[OOP] DIP(의존성 역전 원칙)
Software Engineer Kim 2025. 10. 17. 18:41DIP(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를 구현하는 방법에는 인터페이스나 추상 클래스를 사용하는 것이 포함되며, 이를 통해 개발자는 이를 통해 개발자는 시스템의 각 부분을 독립적으로 개발하고 테스트 할 수 있습니다.
의존성 역전 원칙(DIP)과 그 구현 방법
의존성 역전 원칙(DIP)의 기본 개념, 구현 방법, 그리고 이 원칙이 소프트웨어 설계에 제공하는 장점에 대해 설명합니다.
f-lab.kr
https://inpa.tistory.com/entry/OOP-💠-아주-쉽게-이해하는-DIP-의존-역전-원칙
'Computer Science > OOP & Design Pattern' 카테고리의 다른 글
[OOP] OCP(개방 폐쇄 원칙) (0) | 2025.10.17 |
---|---|
[Design Pattern] Strategy Pattern(전략 패턴) (1) | 2025.07.14 |
[OOP] OCP (Open-Closed Principle) 개념 정리 (0) | 2025.07.07 |
[OOP] 역할, 책임, 협력 그리고 캡슐화, 상속, 추상화 (0) | 2025.06.19 |
Object Oriented Programming(객체 지향 프로그래밍) (0) | 2022.07.09 |