본문 바로가기
728x90
반응형

DIP는 "의존 역전 원칙(Dependency Inversion Principle)란? 

DIP는 객체 지향 설계 원칙 중 하나로, 소프트웨어의 모듈 간 의존성을 관리하는 방법을 아래와 같이 제시한다.

  • 고수준 모듈은 저수준 모듈에 의존해서는 안 된다. 양쪽 모두 추상화에 의존해야 한다.
    • 예를 들어, 고수준 비즈니스 로직 클래스가 저수준 데이터 액세스 클래스를 직접 생성하고 사용한다면, DIP를 위반하고 있을 수 있는 것이다.
  • 추상화는 세부 사항에 의존해서는 안 된다. 세부 사항은 추상화에 의존해야 한다.
    • 예를 들어, 고수준 서비스 클래스가 특정 구현 클래스에 직접 의존한다면, DIP를 위반하고 있을 수 있는 것이다.
더보기
  1. 고수준 모듈 (High-Level Module):
    • 고수준 모듈은 상위 수준의 추상화를 가지고 있으며, 비즈니스 로직 또는 핵심 기능과 관련된 모듈을 의미한다.
    • 고수준 모듈은 높은 수준의 추상화를 통해 비즈니스 요구사항을 다루며, 시스템의 전반적인 동작을 제어한다.

      예를 들어, 주문 처리, 결제 관리, 비즈니스 규칙 구현과 같은 고수준 기능을 담당하는 모듈은 고수준 모듈로 볼 수 있다.
  2. 저수준 모듈 (Low-Level Module):
    • 저수준 모듈은 하위 수준의 추상화를 가지고 있으며, 주로 시스템의 세부 구현과 관련된 모듈을 의미한다.
    • 저수준 모듈은 고수준 모듈의 동작을 구체적으로 지원하거나 기술적인 세부사항을 처리하는 역할을 합니다.

      예를 들어, 데이터베이스 액세스, 네트워크 통신, 파일 입출력과 같은 기술적인 세부사항을 다루는 모듈은 저수준 모듈로 볼 수 있다.

 

그렇다면 추상화는 무엇이고, 추상화를 실행하는 구체화는 무엇인가 알아보자.

추상화 (Abstraction)란?

추상화는 복잡한 현실 세계를 단순화하여 핵심적인 특성과 동작에 집중하는 과정으로 객체 지향에서 추상화는 클래스나 인터페이스를 정의하는 과정이나 객체를 설계할 때 관심 있는 특징을 추출하여 모델을 만드는 것을 의미한다. 이때 공통적인 특성을 갖는 객체들의 추상적인 틀에 만들어야한다.

예를 들어, 자동차를 추상화하면 '자동차'라는 개념을 나타내는 클래스를 정의할 수 있고, 그 안에는 자동차의 속성과 동작들을 추상적으로 표현할 수 있다.

 

구체화 (Instantiation)란?

구체화는 추상화된 개념을 실제로 구현하는 과정으로, 추상화된 개념(클래스나 인터페이스)를 기반으로 실제로 사용될 객체를 생성하고 구현하는 것을 의미한다. 추상화된 개념에 대한 인스턴스를 생성하거나, 추상 클래스를 상속받아 실제 동작을 구현하는 것을 말한다.
예를 들어, 앞에서 추상화한 '자동차' 클래스를 구체화하여 'BMW'라는 자동차 객체를 생성하고, 그 객체에 특정한 값을 설정하거나 메서드를 호출하여 실제 동작을 수행하는 것이다..

 

 

 

728x90
반응형