-
자바 - DIP (Dependency Inversion Principle, 의존 관계 역전 원칙)Java 2023. 11. 22. 22:19
핵심개념: '의존 관계 역전 원칙(Dependency Inversion Principle, DIP)은 고수준 모듈이 저수준 모듈에 의존하면 안되며, 둘 다 추상화에 의존해야 한다는 원칙입니다.'
의존 관계 역전 원칙(Dependency Inversion Principle, DIP)은 소프트웨어의 구조를 결정하는 중요한 원칙 중 하나입니다. 이 원칙은 고수준의 모듈이 저수준의 모듈에 직접 의존하는 대신, 중간에 추상화된 인터페이스를 두어 의존성을 역전시키는 것이 이 원칙의 핵심입니다.
자세한 설명:
DIP는 소프트웨어 컴포넌트간의 의존 관계를 조절하는 원칙입니다. 이 원칙은 추상화와 구체화 사이의 관계를 역전시키는 것을 목표로 합니다. 일반적으로 고수준의 모듈이 저수준의 모듈에 의존하는 관계를 가지지만, DIP를 적용하면 이 관계가 역전되어 고수준 모듈과 저수준 모듈 모두 추상화에 의존하게 됩니다.
이 원칙을 따르면, 코드의 모듈성과 유연성이 향상됩니다. 또한, 각 모듈이 독립적으로 변경되거나 확장될 수 있으므로, 코드의 유지보수성이 향상됩니다.예시:
예를 들어, '전구' 클래스와 '스위치' 클래스가 있다고 가정해봅시다. '스위치'는 '전구'를 켜고 끄는 역할을 합니다. 이 경우, '스위치' 클래스는 '전구' 클래스에 의존하고 있습니다. 하지만 DIP를 적용하면, '스위치'와 '전구' 사이에 '전원을 키는 장치'라는 인터페이스를 두어 '스위치'가 '전구'에 대한 의존성을 줄일 수 있습니다.
샘플 코드:
// DIP를 따르지 않는 경우 class LightBulb { void turnOn() { ... } void turnOff() { ... } } class Switch { private LightBulb lightBulb; void turnOn() { lightBulb.turnOn(); // '전구' 클래스에 의존 } void turnOff() { lightBulb.turnOff(); // '전구' 클래스에 의존 } } // DIP를 따르는 경우 interface SwitchableDevice { void turnOn(); void turnOff(); } class LightBulb implements SwitchableDevice { @Override void turnOn() { ... } @Override void turnOff() { ... } } class Switch { private SwitchableDevice device; void turnOn() { device.turnOn(); // '전원을 키는 장치' 인터페이스에 의존 } void turnOff() { device.turnOff(); // '전원을 키는 장치' 인터페이스에 의존 } }
이처럼 의존 관계 역전 원칙을 이해하고 적용하면, 코드의 모듈성과 유연성을 향상시킬 수 있습니다.
'Java' 카테고리의 다른 글
자바 - ISP (Interface Segregation Principle, 인터페이스 분리 원칙) (1) 2023.11.22 자바 - LSP (Liskov Substitution Principle, 리스코프 치환 원칙) (0) 2023.11.22 자바 - SRP (Single Responsibility Principle, 단일책임원칙) (0) 2023.11.22 자바 - OCP (Open Closed Principle / 개방-폐쇄원칙) (0) 2023.11.22 BufferedReader, BufferedWriter (0) 2021.05.21