ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 자바 - 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(); // '전원을 키는 장치' 인터페이스에 의존
        }
    }

    이처럼 의존 관계 역전 원칙을 이해하고 적용하면, 코드의 모듈성과 유연성을 향상시킬 수 있습니다.

    댓글

Paycis's